9

Ich bekomme sehr interessante Bug in einer meiner Apps. Meine App funktioniert gut auf Android L, aber sobald ich versuche, es auf anderen Android-Versionen laufen zu lassen, bekomme ich ClassNotFoundException oder NoClassDefFoundError beim Versuch, Web-Services mit Retrofit aufrufen, obwohl alle diese Klassen vorhanden sind und gut funktioniert auf meinem Android L-Gerät. Ich weiß nicht, was gerade passiert, App läuft in anderen Versionen, solange ich keine Netzwerkanforderung mache, aber sobald ich für Netzwerkanforderung gehe, gibt es mir entweder ClassNotFoundException oder NoClassDefFoundError. Auch ich benutze Android Studio, also wenn jemand diese Art von Problem früher konfrontiert wurde, dann bitte helfen, ich bin in großer Not.Abrufen von TypeNotPresentException gefolgt von ClassNotFoundException oder NoClassDefFoundError auf Alle Android-Versionen außer Android L

HINWEIS: App funktioniert gut auf Android L und auch Klassen, in denen ich ClassNotFoundException oder NoClassDefFoundError bekomme, sind nicht versionsspezifisch, d. H. Es war nicht so, dass sie in android L oder so unterstützt werden. Alle Klassen, in denen ich diese Fehler erhalte, sind allgemeine Custom/Model-Klassen und haben keine Verbindung zu den höheren Android-Versionen oder so.

Und das sind meine Logcat Fehler

Dies ist die Ausnahme beim Login api schlagen

java.lang.TypeNotPresentException: Type com.codebrew.embazaar.pojo.UserLoginPojo not present 
      at libcore.reflect.ParameterizedTypeImpl.getRawType(ParameterizedTypeImpl.java:63) 
      at libcore.reflect.ParameterizedTypeImpl.getResolvedType(ParameterizedTypeImpl.java:72) 
      at libcore.reflect.ListOfTypes.resolveTypes(ListOfTypes.java:70) 
      at libcore.reflect.ListOfTypes.getResolvedTypes(ListOfTypes.java:55) 
      at libcore.reflect.ParameterizedTypeImpl.getResolvedType(ParameterizedTypeImpl.java:71) 
      at libcore.reflect.ListOfTypes.resolveTypes(ListOfTypes.java:70) 
      at libcore.reflect.ListOfTypes.getResolvedTypes(ListOfTypes.java:55) 
      at libcore.reflect.Types.getTypeArray(Types.java:50) 
      at java.lang.reflect.Method.getGenericParameterTypes(Method.java:216) 
      at retrofit.RestMethodInfo.parseResponseType(RestMethodInfo.java:250) 
      at retrofit.RestMethodInfo.<init>(RestMethodInfo.java:97) 
      at retrofit.RestAdapter.getMethodInfo(RestAdapter.java:213) 
      at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:236) 
      at $Proxy0.userLogin(Native Method) 
      at com.codebrew.embazaar.MainActivity.loginUser(MainActivity.java:529) 
      at com.codebrew.embazaar.MainActivity.onClick(MainActivity.java:324) 
      at android.view.View.performClick(View.java:4748) 
      at android.view.View$PerformClick.run(View.java:19535) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:146) 
      at android.app.ActivityThread.main(ActivityThread.java:5679) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.ClassNotFoundException: com.codebrew.embazaar.pojo.UserLoginPojo 
      at java.lang.Class.classForName(Native Method) 
      at java.lang.Class.forName(Class.java:251) 
      at libcore.reflect.ParameterizedTypeImpl.getRawType(ParameterizedTypeImpl.java:61) 
            at libcore.reflect.ParameterizedTypeImpl.getResolvedType(ParameterizedTypeImpl.java:72) 
            at libcore.reflect.ListOfTypes.resolveTypes(ListOfTypes.java:70) 
            at libcore.reflect.ListOfTypes.getResolvedTypes(ListOfTypes.java:55) 
            at libcore.reflect.ParameterizedTypeImpl.getResolvedType(ParameterizedTypeImpl.java:71) 
            at libcore.reflect.ListOfTypes.resolveTypes(ListOfTypes.java:70) 
            at libcore.reflect.ListOfTypes.getResolvedTypes(ListOfTypes.java:55) 
            at libcore.reflect.Types.getTypeArray(Types.java:50) 
            at java.lang.reflect.Method.getGenericParameterTypes(Method.java:216) 
            at retrofit.RestMethodInfo.parseResponseType(RestMethodInfo.java:250) 
            at retrofit.RestMethodInfo.<init>(RestMethodInfo.java:97) 
            at retrofit.RestAdapter.getMethodInfo(RestAdapter.java:213) 
            at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:236) 
            at $Proxy0.userLogin(Native Method) 
            at com.codebrew.embazaar.MainActivity.loginUser(MainActivity.java:529) 
            at com.codebrew.embazaar.MainActivity.onClick(MainActivity.java:324) 
            at android.view.View.performClick(View.java:4748) 
            at android.view.View$PerformClick.run(View.java:19535) 
            at android.os.Handler.handleCallback(Handler.java:733) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:146) 
            at android.app.ActivityThread.main(ActivityThread.java:5679) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 
            at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.NoClassDefFoundError: com/codebrew/embazaar/pojo/UserLoginPojo 
            at java.lang.Class.classForName(Native Method) 
            at java.lang.Class.forName(Class.java:251) 
            at libcore.reflect.ParameterizedTypeImpl.getRawType(ParameterizedTypeImpl.java:61) 
            at libcore.reflect.ParameterizedTypeImpl.getResolvedType(ParameterizedTypeImpl.java:72) 
            at libcore.reflect.ListOfTypes.resolveTypes(ListOfTypes.java:70) 
            at libcore.reflect.ListOfTypes.getResolvedTypes(ListOfTypes.java:55) 
            at libcore.reflect.ParameterizedTypeImpl.getResolvedType(ParameterizedTypeImpl.java:71) 
            at libcore.reflect.ListOfTypes.resolveTypes(ListOfTypes.java:70) 
            at libcore.reflect.ListOfTypes.getResolvedTypes(ListOfTypes.java:55) 
            at libcore.reflect.Types.getTypeArray(Types.java:50) 
            at java.lang.reflect.Method.getGenericParameterTypes(Method.java:216) 
            at retrofit.RestMethodInfo.parseResponseType(RestMethodInfo.java:250) 
            at retrofit.RestMethodInfo.<init>(RestMethodInfo.java:97) 
            at retrofit.RestAdapter.getMethodInfo(RestAdapter.java:213) 
            at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:236) 
            at $Proxy0.userLogin(Native Method) 
            at com.codebrew.embazaar.MainActivity.loginUser(MainActivity.java:529) 
            at com.codebrew.embazaar.MainActivity.onClick(MainActivity.java:324) 
            at android.view.View.performClick(View.java:4748) 
            at android.view.View$PerformClick.run(View.java:19535) 
            at android.os.Handler.handleCallback(Handler.java:733) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:146) 
            at android.app.ActivityThread.main(ActivityThread.java:5679) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 
            at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.ClassNotFoundException: Didn't find class "com.codebrew.embazaar.pojo.UserLoginPojo" on path: DexPathList[[zip file "/data/app/com.codebrew.embazaar-11.apk"],nativeLibraryDirectories=[/data/app-lib/com.codebrew.embazaar-11, /vendor/lib, /system/lib]] 
      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67) 
      at java.lang.ClassLoader.loadClass(ClassLoader.java:497) 
      at java.lang.ClassLoader.loadClass(ClassLoader.java:457) 
            at java.lang.Class.classForName(Native Method) 
            at java.lang.Class.forName(Class.java:251) 
            at libcore.reflect.ParameterizedTypeImpl.getRawType(ParameterizedTypeImpl.java:61) 
            at libcore.reflect.ParameterizedTypeImpl.getResolvedType(ParameterizedTypeImpl.java:72) 
            at libcore.reflect.ListOfTypes.resolveTypes(ListOfTypes.java:70) 
            at libcore.reflect.ListOfTypes.getResolvedTypes(ListOfTypes.java:55) 
            at libcore.reflect.ParameterizedTypeImpl.getResolvedType(ParameterizedTypeImpl.java:71) 
            at libcore.reflect.ListOfTypes.resolveTypes(ListOfTypes.java:70) 
            at libcore.reflect.ListOfTypes.getResolvedTypes(ListOfTypes.java:55) 
            at libcore.reflect.Types.getTypeArray(Types.java:50) 
            at java.lang.reflect.Method.getGenericParameterTypes(Method.java:216) 
            at retrofit.RestMethodInfo.parseResponseType(RestMethodInfo.java:250) 
            at retrofit.RestMethodInfo.<init>(RestMethodInfo.java:97) 
            at retrofit.RestAdapter.getMethodInfo(RestAdapter.java:213) 
            at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:236) 
            at $Proxy0.userLogin(Native Method) 
            at com.codebrew.embazaar.MainActivity.loginUser(MainActivity.java:529) 
            at com.codebrew.embazaar.MainActivity.onClick(MainActivity.java:324) 
            at android.view.View.performClick(View.java:4748) 
            at android.view.View$PerformClick.run(View.java:19535) 
            at android.os.Handler.handleCallback(Handler.java:733) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:146) 
            at android.app.ActivityThread.main(ActivityThread.java:5679) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 
            at dalvik.system.NativeStart.main(Native Method) 

und dieses i bekommen werde, während vergessen Passwort anfordern Netzwerk schlagen

java.lang.NoClassDefFoundError: com.codebrew.embazaar.MainActivity$7$1 
      at com.codebrew.embazaar.MainActivity$7.onClick(MainActivity.java:392) 
      at android.view.View.performClick(View.java:4748) 
      at android.view.View$PerformClick.run(View.java:19535) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:146) 
      at android.app.ActivityThread.main(ActivityThread.java:5679) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 
      at dalvik.system.NativeStart.main(Native Method) 

** Wichtig: Während ich meinen Code debuggte, erhalte ich TypeNotPresentException, was eine unchecked Ausnahme ist, gefolgt von diesen ClassNotFoundException oder NoClassDefFoundError. Ich erwähne dies hier, weil ich denke, dass dieses Ding Klarheit über meine Frage/Problem machen kann.

Hier ist meine MainActivityCommonPojo und gradle file

+0

Ich kenne diese Fehler, was sind die Super-Klassen von com.codebrew.embazaar.MainActivity? Eine Klasse fehlt z.B. Sie haben die Compat-Bibliothek verpasst. – rekire

+0

Sie meinen, die Superklasse zu sagen ?? Meine MainActivity-Klasse erweitert die Aktivitätsklasse –

+0

Ich denke, Sie verwenden möglicherweise Klassen, die in API 21 eingeführt wurden. Wie Karten, Recycler-Ansicht. Versuchen Sie, die compat-Bibliothek zu verwenden, um frühere Versionen zu unterstützen. https://developer.android.com/training/material/compatibility.html –

Antwort

6

Dies liegt daran, Sie

haben
multiDexEnabled = true 

auf Ihrer gradle Datei.

Wenn Sie multidex aktivieren, müssen Sie sicherstellen, dass alle classes.dex-Dateien geladen werden, wenn Ihre Anwendung gestartet wird. Andernfalls wird das Laden von Klassen fehlschlagen, die nicht in der ersten classes.dex-Datei enthalten sind.

Dies wird in Android L nicht benötigt, da es das Laden mehrerer Dex-Dateien beim Start unterstützt, nicht nur eines.

Um dies zu erreichen, können Sie eine der folgenden Möglichkeiten versuchen:

  • multiDexEnabled = true entfernen, aber Sie können die 65K-Methode Grenze überschreiten.
  • folgen Sie den Anweisungen auf https://developer.android.com/tools/building/multidex.html, insbesondere die

    compile 'com.android.support:multidex:1.0.0' 
    

    Abhängigkeit Hinzufügen und Ihr Anwendungsobjekt erbt oder bei MultiDexApplication starten.

+0

Danke Mann, du hast meinen Tag gemacht .. :) –