1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

ClassNotFoundException ? Geht ja gar nich!

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Unicate, 30.09.2010.

  1. Unicate, 30.09.2010 #1
    Unicate

    Unicate Threadstarter Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Hi alle zusammen!

    Ich habe vor kurzem meine erste App in den Market geladen. Habe sie in sämtlichen Emulatoren getestet und sie hat auch bei allen funktioniert außer in Froyo. Daraufhin habe ich die App-SDK version auf 7 gesetzt, so das eigentlich kein Froyo user diese installieren kann (oder?)

    Jedenfalls habe ich folgenden errorreport bekommen:
    Code:
    java.lang.RuntimeException: Unable to instantiate application  de.unicate.android.ddtram.DDTram: java.lang.ClassNotFoundException:  de.unicate.android.ddtram.DDTram in loader  dalvik.system.PathClassLoader[/data/app/de.unicate.android.ddtram-1.apk]
    	at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:670)
    	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4483)
    	at android.app.ActivityThread.access$3000(ActivityThread.java:135)
    	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2181)
    	at android.os.Handler.dispatchMessage(Handler.java:99)
    	at android.os.Looper.loop(Looper.java:144)
    	at android.app.ActivityThread.main(ActivityThread.java:4937)
    	at java.lang.reflect.Method.invokeNative(Native Method)
    	at java.lang.reflect.Method.invoke(Method.java:521)
    	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    	at dalvik.system.NativeStart.main(Native Method)
    Caused  by: java.lang.ClassNotFoundException: de.unicate.android.ddtram.DDTram  in loader  dalvik.system.PathClassLoader[/data/app/de.unicate.android.ddtram-1.apk]
    	at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
    	at android.app.Instrumentation.newApplication(Instrumentation.java:945)
    	at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:660)
    	... 11 more
    
    Die Klasse "de.unicate.android.ddtram.DDTram" gibt es nicht und soll es auch nicht geben.
    Warum, wo und welche Version des Android versucht(weil ich tu's nicht), eine solche Klasse zu instanzieren?

    Ist das evtl. zum Standard geworden? (das die Applikation eine solche Klassen besitzen muss)
    Habe ich was vergessen?

    Ich habe mal gegoogled und ich bin nicht der einzige mit dem Problem, allerdings habe ich auch noch keine Lösung dafür gefunden.
     
  2. swordi, 30.09.2010 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    froyo ist 8
     
  3. Unicate, 30.09.2010 #3
    Unicate

    Unicate Threadstarter Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Deswegen habe ich sie ja auch auf die 7 gesetzt. Ich möchte ja nicht, das ein Froyo user diese version installiert (noch nicht)
     
  4. Unicate, 30.09.2010 #4
    Unicate

    Unicate Threadstarter Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Ok, hier ist warscheinlich das Problem:

    Future versions of Android (beyond Android 2.0.1) will no longer check or enforce the android:maxSdkVersion attribute during installation or revalidation. Android Market will continue to use the attribute as a filter, however, when presenting users with applications available for download.

    Da ich die Applikation aber mit dem Android 2.1+update gebaut habe, wird es sicher möglich sein die Applikation auf dem Froyo zu installieren.

    Da ich bisher kein maximum gesetzt habe, wird es im Market auch nicht gefiltert.

    Andere Meinungen?
     
  5. Unicate, 30.09.2010 #5
    Unicate

    Unicate Threadstarter Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Ok, ich hatte unrecht.

    Selbst nachdem ich das sdkMaximum gesetzt hatte hat es nicht funktioniert.

    Nach ein wenig mehr googlen...

    Habe ich das hier gefunden.

    Am Ende des Eintrags steht in einem Kommentar, das man im Manifest nur das Attribut "android:name ..." entfernen muss, und siehe da, es funktioniert wieder.
     
  6. MetBo, 30.09.2010 #6
    MetBo

    MetBo Fortgeschrittenes Mitglied

    Beiträge:
    264
    Erhaltene Danke:
    4
    Registriert seit:
    14.05.2010
    Du kannst den Eintrag auch stehen lassen, musst ihn nur an dein Package bzw. Klasse anpassen.

    Hatte ich auch, nachdem ich das Package umbenannt habe, bekam ich auch ein ClassNotFound. Ich habe dann gesehen dass das Attribut android:name noch das alte Package hatte.
     
  7. BenOtto, 02.10.2010 #7
    BenOtto

    BenOtto Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    15
    Registriert seit:
    30.08.2010
    Irgendwie finde ich die Namenswahl des Attributes auch ein wenig ungeschickt. classname wäre irgendwie eindeutiger.
     

Diese Seite empfehlen