web-dev-qa-db-fra.com

Causée par: Java.lang.NoClassDefFoundError: Classe non trouvée à l'aide du chargeur de classe de démarrage aucune trace de pile disponible

J'ai essayé d'utiliser OkHttp et Picasso ( à la suite de cette réponse ) pour la mise en cache sur disque d'images que je téléchargeais depuis le stockage Firebase. Maintenant, l'application donne des exceptions et des plantages. J'ai vu ces messages: post 1 , post 2 mais je n'ai trouvé aucune solution pertinente. J'ai aussi essayé de nettoyer et de reconstruire le projet mais je n'ai pas eu de chance.

Voici build.gradle:

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "social.com.networking.social.media.app"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
            multiDexEnabled true
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.Android.support', module: 'support-annotations'
    })
    compile 'com.Android.support:appcompat-v7:25.1.0'
    compile 'com.Android.support:design:25.1.0'
    compile 'br.com.mauker.materialsearchview:materialsearchview:1.2.0'
    compile 'com.alirezaafkar:toolbar:1.1.1'
    compile 'com.github.mancj:MaterialSearchBar:0.3.5'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.daimajia.slider:library:1.1.5@aar'
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'com.google.firebase:firebase-core:10.0.1'
    compile 'com.google.firebase:firebase-ads:10.0.1'
    compile 'com.google.firebase:firebase-messaging:10.0.1'
    compile "com.google.firebase:firebase-auth:10.0.1"
    compile 'com.google.firebase:firebase-storage:10.0.1'
    compile 'com.google.firebase:firebase-crash:10.0.1'
    compile 'com.squareup.okhttp3:okhttp:3.2.0'
    compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.0.2'
    compile 'com.Android.support:multidex:1.0.1'

    compile 'org.parceler:parceler-api:1.1.6'
    annotationProcessor 'org.parceler:parceler:1.1.6'


    testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'

Full Stacktrace:

Process: social.com.networking.social.media.app, PID: 28258
Java.lang.NoClassDefFoundError: Failed resolution of: Lcom/squareup/okhttp/OkHttpClient;
at com.squareup.picasso.OkHttpDownloader.defaultOkHttpClient(OkHttpDownloader.Java:31)
at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.Java:76)
at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.Java:65)
at social.com.networkingsocialmediaapp.Global.onCreate(Global.Java:17)
at Android.app.Instrumentation.callApplicationOnCreate(Instrumentation.Java:1018)
at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:4991)
at Android.app.ActivityThread.-wrap1(ActivityThread.Java)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1555)
at Android.os.Handler.dispatchMessage(Handler.Java:111)
at Android.os.Looper.loop(Looper.Java:207)
at Android.app.ActivityThread.main(ActivityThread.Java:5776)
at Java.lang.reflect.Method.invoke(Native Method)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:789)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:679)

Caused by: Java.lang.ClassNotFoundException: Didn't find class "com.squareup.okhttp.OkHttpClient" on path: DexPathList[[Zip file "/data/app/social.com.networking.social.media.app-2/base.apk"],nativeLibraryDirectories=[/data/app/social.com.networking.social.media.app-2/lib/arm64, /vendor/lib64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:56)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:511)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:469)
at com.squareup.picasso.OkHttpDownloader.defaultOkHttpClient(OkHttpDownloader.Java:31)
at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.Java:76)
at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.Java:65)
at social.com.networkingsocialmediaapp.Global.onCreate(Global.Java:17)
at Android.app.Instrumentation.callApplicationOnCreate(Instrumentation.Java:1018)
at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:4991)
at Android.app.ActivityThread.-wrap1(ActivityThread.Java)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1555)
at Android.os.Handler.dispatchMessage(Handler.Java:111)
at Android.os.Looper.loop(Looper.Java:207)
at Android.app.ActivityThread.main(ActivityThread.Java:5776)
at Java.lang.reflect.Method.invoke(Native Method)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:789)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:679)

Suppressed: Java.lang.ClassNotFoundException: com.squareup.okhttp.OkHttpClient
at Java.lang.Class.classForName(Native Method)
at Java.lang.BootClassLoader.findClass(ClassLoader.Java:781)
at Java.lang.BootClassLoader.loadClass(ClassLoader.Java:841)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:504)
... 15 more

Caused by: Java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

Edit 1: J'ai activé MultiDex comme dit Redman, mais cela donne toujours la même erreur. Selon ceci: developer.Android.com/studio/build/multidex.html#keep , je dois choisir les classes nécessaires dans le fichier APK de base. Comment déterminer quelles classes sont nécessaires? 

11
Shubham Shukla

Dans Android Studio 2.3 et versions ultérieures, il existe Instant Run qui peut affecter votre code.

Désactiver Instant Run

Fichier -> Paramètres -> Construction, exécution, déploiement -> Exécution instantanée

Dans mon cas, cela fonctionnait parfaitement lorsqu'il était exécuté à partir de Android Studio mais plantage lors de l'installation à partir d'autres sources

56
Kishore Jethava

1) Veuillez désinstaller l'application depuis votre mobile

2) Réinstaller l'application maintenant à partir du studio Android

3) 98% cela fonctionnera sinon nettoyez le projet et réinstallez-le 

8
Kulasekar

Vous devrez peut-être activer multidex. Suivez le guide à partir de cette page.

https://developer.Android.com/studio/build/multidex.html , pour activer multidex

  defaultConfig {

    minSdkVersion 14
    targetSdkVersion 21

    multiDexEnabled true
}

 dependencies {
     compile 'com.Android.support:multidex:1.0.0'
 }
6
Manohar Reddy

Supprimez simplement le dossier de construction de votre projet, puis nettoyez et exécutez votre application. Cela a fait le tour pour moi ...

2
Rezaul Karim

Mon code compilait bien sur le périphérique à l'aide d'un câble USB, mais lorsque j'essayais de l'installer à l'aide du fichier * .apk, il cassait. J'ai donc décoché l'option Fichier -> Paramètres -> Construction, Exécution, Déploiement -> Instantané. Exécutez, mais maintenant, il fonctionne bien avec le fichier * .apk et commence à casser avec l’installation par USB, le message d’erreur est dans l’image attachec, même si j’appuie sur OK, cela ne fonctionne pas. Un message d'erreur apparaît. 

 enter image description here

2
Shamim Ahmad

Essayez de supprimer le dossier .gradle du projet.

1
Zon

J'ai également eu ce problème, et il n'est toujours pas possible de désactiver l'instant run.Later, j'ai constaté que j'ai supprimé tous les fichiers du dossier build-cache, puis nettoyé le projet. Mon répertoire est C:\Users\HDB. Android\built-cache.J'espère pouvoir aider d'autres personnes qui rencontrent ce bogue.

0
hepeng

(Je sais que c'est une vieille question, mais je suis venu ici à la recherche d'une solution à un problème similaire.)

J'ai une réponse différente à considérer avant que vous n'épuisiez toutes les suggestions ci-dessus: l'erreur ClassNotFoundException: YourParcelableClass n'est peut-être pas le problème. En fait, il se peut que ce ne soit pas un problème.

J'ai une application qui affiche un écran de contenu varié qui est transmis sous forme de colis et rendu au format HTML dans une vue Web. cela fonctionnait très bien jusqu'à ce que je nettoie le code, que je l'enregistre, que je vérifie un nouvel arbre, que je désinstallé et que je réinstalle l'application sur mon téléphone. J'ai commencé à avoir un écran vide. évidemment, l’exception ClassNotFoundException dans le journal signifiait que mon contenu n’était pas correctement exprimé.

Après au moins heure d'invalidation de l'exécution instantanée, du rm -rf .gradle, du nettoyage du projet, de l'invalidation des caches et du redémarrage, etc., j'ai commencé à ajouter de plus en plus de journalisation de remise en cause jusqu'à ce que je réalise que je recevais. mon contenu de Intent.getParcelableExtra(); l'écran vide semblait ne pas être lié! (Je ne sais toujours pas pourquoi, mais WebView.loadData() a cessé de fonctionner et doit être remplacé par WebView.loadDataWithBaseURL().)

J'espère que cela économisera une heure de stupidité à quelqu'un d'autre. Si vous voyez cette exception ClassNotFoundException avec le nom de votre classe, vérifiez si vos objets sont toujours correctement gérés. ils pourraient être!

0
kuhrusty

Pour moi, ce problème a été résolu par Désactiver Instant Run

Il suffit d'aller dans Préférences -> Construction, Exécution, Déploiement -> Exécution instantanée -> Désactiver l'option

Et redémarrez l'application

0
Mayuresh Satao