web-dev-qa-db-de.com

java.lang.NoClassDefFoundError: Fehler bei der Auflösung von: Landroid/support/v4/os/BuildCompat

Ich habe die AppCompat-Bibliotheken auf 24.2.1 und das SDK auf Android 7 in meiner Eclipse-Installation aktualisiert. Seitdem kann ich keine meiner Apps ausführen. Ich freue mich, wenn Sie etwas helfen können damit...

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

Sie erhalten NoClassDefFoundError & ClassNotFoundException

NoClassDefFoundError in Java wird ausgeführt, wenn Java Virtual Machine nicht .__ ist. in der Lage, eine bestimmte Klasse zur Laufzeit zu finden, die unter .__ verfügbar war. Zeit kompilieren.

FYI 

Sie verwenden Eclipse. Android Studio ist eine weitaus einfachere Möglichkeit, Android zu entwickeln, wenn Sie den Dreh raus haben. Für Entwickler, die Eclipse verwendet haben, ist die Migration zu Studio ein Alptraum für sie. Eclipse ist tot (Meine persönliche Meinung).

Gehen Sie für Ihre NoClassDefFoundError -Objektoption unter Project > Clean zur Option rebuild und wählen Sie dann das gewünschte Projekt clean up aus.

Lösungen

Überprüfen Sie, ob Ihr Klassenpfad dieses Jar (AppCompat) enthält, wenn Ihr Klassenpfad enthält das jar nicht, dann fügen Sie diese Klasse einfach in Ihren Klassenpfad ein.

Verwenden Sie Android Studio anstelle von Eclipse. Lesen 

  1. Unterstützungsbibliothek

Die Gradle-Buildskriptabhängigkeitskennung für diese Bibliothek lautet wie folgt:

com.Android.support:appcompat-v7:24.2.1

Dann Clean-Rebuild-Restart IDE

29
IntelliJ Amiya

In meinem Fall 

  1. sauberes Projekt
  2. ungültig machen und neu starten

es ist Arbeit 

9
Lonie

Ein weiterer hässlicher Grund dafür ist, dass Sie versuchen, einen Debugger mit Haltepunkt an etwas anzuhängen, das während der Aktivitätserstellung geschieht.

2
Rock_Artist

Ich fügte zwei Klassen zu meinem Java-Paket hinzu und es funktioniert einwandfrei.

 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

In meinem Fall wurde der Fehler durch die Verwendung der gesamten Bibliothek von gms: play-services verursacht. Einige Komponenten von gms: play-services beziehen sich auf andere als die von Ihnen ausdrücklich angegebenen Versionen. 

Verwenden Sie nur die erforderlichen Play-Services, z. B. "com.google.Android.gms: play-services-analytics: 10.2.0" anstelle von "com.google.Android.gms: play-services: 10.2.0". . 

Siehe auch: Alle com.Android.support-Bibliotheken müssen exakt dieselbe Versionsspezifikation verwenden

Gute Lektüre: https://blog.mindorks.com/avoiding-conflicts-in-Android-gradle-dependencies-28e4200ca235

0
Abhisek Mallick

Update Implementierung von com.google.Android.gms: play-services-maps in Gradle auf eine neuere Version.

Das funktioniert bei mir.

0
MSilva
public class MApplication extends Application {

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

Hier überschreiben wir die attachBaseContext () - Methode, um die Helper.install(MApplication.this);-Codezeile hinzuzufügen.

Hinweis: Da einige SDK-Klassen jetzt vor der Verwendung geladen werden müssen, wird der Ladevorgang von Helper.install () ausgeführt. Der Entwickler muss diese Methode aufrufen, bevor SDK-Funktionen verwendet werden. Andernfalls kann es zu unerwarteten Abstürzen kommen . reference

Es sei denn, die App stürzt mit Java.lang.NoClassDefFoundError ab: Fehler beim Auflösen von: ....

0
SaadurRehman