web-dev-qa-db-fra.com

java.lang.NoClassDefFoundError: Echec de la résolution de: Landroid/support/v4/os/BuildCompat

J'ai mis à jour les bibliothèques AppCompat vers 24.2.1 et le SDK sous Android 7 dans mon installation Eclipse . Depuis, je ne suis plus en mesure d'exécuter mes applications . J'apprécie que vous puissiez m'aider un peu. avec ça...

E/AndroidRuntime(17555): Java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/os/BuildCompat;
E/AndroidRuntime(17555):    at Android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.Java:196)
E/AndroidRuntime(17555):    at Android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.Java:181)
E/AndroidRuntime(17555):    at Android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.Java:521)
E/AndroidRuntime(17555):    at Android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.Java:71)
E/AndroidRuntime(17555):    at com.ryosoftware.calendareventsnotifier.MainActivity.onCreate(MainActivity.Java:844)
E/AndroidRuntime(17555):    at Android.app.Activity.performCreate(Activity.Java:5990)
E/AndroidRuntime(17555):    at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1106)
E/AndroidRuntime(17555):    at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2311)
E/AndroidRuntime(17555):    at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2420)
E/AndroidRuntime(17555):    at Android.app.ActivityThread.access$900(ActivityThread.Java:154)
E/AndroidRuntime(17555):    at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1321)
E/AndroidRuntime(17555):    at Android.os.Handler.dispatchMessage(Handler.Java:102)
E/AndroidRuntime(17555):    at Android.os.Looper.loop(Looper.Java:135)
E/AndroidRuntime(17555):    at Android.app.ActivityThread.main(ActivityThread.Java:5294)
E/AndroidRuntime(17555):    at Java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(17555):    at Java.lang.reflect.Method.invoke(Method.Java:372)
E/AndroidRuntime(17555):    at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:904)
E/AndroidRuntime(17555):    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:699)
E/AndroidRuntime(17555): Caused by: Java.lang.ClassNotFoundException: Didn't find class "Android.support.v4.os.BuildCompat" on path: DexPathList[[Zip file "/data/app/com.ryosoftware.calendareventsnotifier-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
E/AndroidRuntime(17555):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:56)
E/AndroidRuntime(17555):    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:511)
E/AndroidRuntime(17555):    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:469)
E/AndroidRuntime(17555):    ... 18 more
E/AndroidRuntime(17555):    Suppressed: Java.lang.ClassNotFoundException: Android.support.v4.os.BuildCompat
E/AndroidRuntime(17555):        at Java.lang.Class.classForName(Native Method)
E/AndroidRuntime(17555):        at Java.lang.BootClassLoader.findClass(ClassLoader.Java:781)
E/AndroidRuntime(17555):        at Java.lang.BootClassLoader.loadClass(ClassLoader.Java:841)
E/AndroidRuntime(17555):        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:504)
E/AndroidRuntime(17555):        ... 19 more
E/AndroidRuntime(17555):    Caused by: Java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
24
The Matrix

Vous obtenez NoClassDefFoundError & ClassNotFoundException

NoClassDefFoundError en Java survient lorsque la machine virtuelle Java n'est pas capable de trouver une classe particulière au moment de l'exécution qui était disponible à temps de compilation.

FYI 

Vous utilisez Eclipse. Android Studio est un moyen beaucoup plus simple de développer pour Android si vous parvenez à le maîtriser. Pour les développeurs qui utilisent Eclipse, la migration vers Studio est un cauchemar pour eux. Eclipse est morte (mon opinion personnelle).

Pour votre option NoClassDefFoundError, accédez à l'option rebuild sous Project > Clean, puis sélectionnez le projet que vous souhaitez nettoyer .Puis redémarrez votre Eclipse, puis réexécutez-le.

Solutions

Vérifiez que votre chemin d'accès aux classes contient ce fichier jar (AppCompat), si votre chemin d'accès aux classes ne contient pas le fichier, ajoutez simplement cette classe dans votre chemin de classe.

Vous devez utiliser Android Studio au lieu de Eclipse. Lis 

  1. Fonctionnalités de la bibliothèque de support

L'identifiant de dépendance de script de génération Gradle pour cette bibliothèque est le suivant:

com.Android.support:appcompat-v7:24.2.1

Alors Clean-Rebuild-Restart IDE

29
IntelliJ Amiya

Dans mon cas 

  1. projet propre
  2. invalider et redémarrer

c'est du travail 

9
Lonie

La raison en est une autre moche si vous essayez de joindre un débogueur avec un point d'arrêt sur quelque chose qui se produit pendant la création d'Activité.

2
Rock_Artist

J'ai ajouté deux classes dans mon package Java et son fonctionnement fonctionne bien, conservez les deux classes comme indiqué dans l'image ci-dessous:

 enter image description here

AsyncTaskCompat.Java

public class AsyncTaskCompat {

/**
 * Executes the task with the specified parameters, allowing multiple tasks to run in parallel
 * on a pool of threads managed by {@link Android.os.AsyncTask}.
 *
 * @param task The {@link Android.os.AsyncTask} to execute.
 * @param params The parameters of the task.
 * @return the instance of AsyncTask.
 */
public static <Params, Progress, Result> AsyncTask<Params, Progress, Result> executeParallel(
        AsyncTask<Params, Progress, Result> task, Params... params) {
    if (task == null) {
        throw new IllegalArgumentException("task can not be null");
    }

    if (Build.VERSION.SDK_INT >= 11) {
        // From API 11 onwards, we need to manually select the THREAD_POOL_EXECUTOR
        AsyncTaskCompatHoneycomb.executeParallel(task, params);
    } else {
        // Before API 11, all tasks were run in parallel
        task.execute(params);
    }

    return task;
}
}

AsyncTaskCompatHoneycomb.Java

class AsyncTaskCompatHoneycomb {

static <Params, Progress, Result> void executeParallel(
        AsyncTask<Params, Progress, Result> task, Params... params) {
    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
}
}
0
varotariya vajsi

Dans mon cas, l'erreur était due à l'utilisation de la bibliothèque entière gms: play-services. Certains composants de gms: play-services font référence à des versions autres que celles spécifiées explicitement par vous. 

Utilisez uniquement les services de jeu requis, par exemple: 'com.google.Android.gms: play-services-analytics: 10.2.0' au lieu de 'com.google.Android.gms: play-services: 10.2.0' . 

Voir aussi: Toutes les bibliothèques com.Android.support doivent utiliser exactement la même spécification de version

Bonne lecture: https://blog.mindorks.com/avoiding-conflicts-in-Android-gradle-dependencies-28e4200ca235

0
Abhisek Mallick
public class MApplication extends Application {

    @Override
    protected void attachBaseContext(Context paramContext) {
        super.attachBaseContext(paramContext);
        Helper.install(MApplication.this);
    }
}

Ici, nous substituons la méthode attachBaseContext () pour ajouter la ligne de code Helper.install(MApplication.this);.

Remarque: comme certaines classes du SDK doivent maintenant être chargées avant de pouvoir être utilisées, le processus de chargement est effectué par Helper.install (). Le développeur doit appeler cette méthode avant d'utiliser une fonctionnalité du SDK. Sinon, des accidents inattendus risquent de se produire . référence

Sauf si l'application se bloque avec Java.lang.NoClassDefFoundError: Echec de la résolution de: ....

0
SaadurRehman