2015-02-03 4 views
11

Das ist mein Fehlerprotokoll mit Android Studio acheived 1.0.2Android Studio java.lang.NoClassDefFoundError: android.support.v4.app.NavUtilsJB

02-03 13:05:23.831 8385-8385/com.******.*******E/AndroidRuntime﹕  FATAL EXCEPTION: main 
    java.lang.NoClassDefFoundError: android.support.v4.app.NavUtilsJB 
     at android.support.v4.app.NavUtils$NavUtilsImplJB.getParentActivityName(NavUtils .java:125) 
     at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:302) 
     at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:281) 
     at android.support.v7.app.ActionBarActivityDelegateBase.onCreate(ActionBarActivityDelegateBase.java:142) 
     at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:123) 
     at com..******.*******.****.ActivityWelcome.onCreate(ActivityWelcome.java:33) 
     at android.app.Activity.performCreate(Activity.java:5104) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
     at android.app.ActivityThread.access$600(ActivityThread.java:141) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:5041) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
     at dalvik.system.NativeStart.main(Native Method) 

Konfiguration

buildToolsVersion "21.1.2" 
android SDK TOOLS"24.0.2" 
multidex enabled 
predexLibraries =false 
incremental = true 
jumboMode = false 
    dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.google.android.gms:play-services:6.5.87' 
    compile 'com.google.code.gson:gson:2.3' 
    compile 'com.android.support:support-v4:[email protected]' 
    compile 'com.android.support:appcompat-v7:[email protected]' 
    compile project(':ViewPagerIndicator') 
    compile('de.keyboardsurfer.android.widget:crouton:[email protected]') { 
     exclude group: 'com.google.android', module: 'support-v4' 
    } 
    compile 'org.java-websocket:Java-WebSocket:1.3.0' 
} 

Wie zu lösen dieser Fehler? Gradlew sauber hilft nicht. Das Löschen von Ordnern funktioniert auch nicht. Android Studio zeigt keine Fehler beim Kompilieren.

+0

Benutzer auf einigen Telefonen melden einen ähnlichen Fehler für meine App. Die Konfiguration sieht folgendermaßen aus: [this] (https: //raw.githubusercontent.com/sanskrit-coders/stardict-wörterbuch-updater/a5c213592a3759e42ff96f0121839bb58fa1e1ed/app/build.gradle) –

+0

Ich manuell Projekt von einem Kollegen heruntergeladen, die dieses Problem gelöst haben, und es begann zu arbeiten. Code durch Git zu bekommen, hat nicht geholfen. In meinem Fall gibt es ein anderes Problem mit Java JDK verschiedenen Versionen - verschiedene Bugs. – Alpha

+0

Alpha, könnten Sie bestätigen oder nicht, dass die von mir vorgeschlagene Lösung die von Ihrem Mitarbeiter verwendete Lösung war? – Sam

Antwort

41

Ich hatte dieses Problem und nur die Lösung gefunden - Antwort ist RTFM! Hier sind die Anweisungen: https://developer.android.com/tools/building/multidex.html

Multidexing ist eine neue Funktion und erfordert daher eine Support-Bibliothek, um mit Pre-Lollipop-Geräten kompatibel zu sein. Sie müssen die folgenden auf Ihre gradle Dateiabhängigkeiten hinzuzufügen:

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

Auch ermöglichen multidex Ausgabe in Ihrer gradle Datei:

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.0" 

    defaultConfig { 
     ... 
     minSdkVersion 14 
     targetSdkVersion 21 
     ... 

     // Enabling multidex support. 
     multiDexEnabled true 
    } 
} 

Und dann fügen Sie die multidex Support-Anwendung auf Ihrem Manifest:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.android.multidex.myapplication"> 
    <application 
     ... 
     android:name="android.support.multidex.MultiDexApplication"> 
     ... 
    </application> 
</manifest> 

Hinweis: Wenn Ihre Anwendung die Application-Klasse bereits erweitert, können Sie die Methode attachBaseContext() überschreiben und MultiDe aufrufen x.install (this) um multidex zu aktivieren. Weitere Informationen finden Sie in der Referenzdokumentation MultiDexApplication.

@Override 
protected void attachBaseContext(Context context) { 
    super.attachBaseContext(context); 
    MultiDex.install(this); 
} 

Auch hier sehen die Anweisung oben für weitere Informationen ...

hoffe, das hilft

+0

Was hat die Unterstützung von multidex mit einem Fehler "android.support.v4.app.NavUtilsJB NoClassDefFoundError" zu tun? –

+0

multidex ist in Alphas Frage eingeschaltet. Ich glaube, dass, wenn Sie den Manifest nicht so einrichten, wie ich gezeigt habe, die anderen Dex's nicht geladen werden und das System bestimmte Klassen nicht finden wird. – Sam

+2

Gott sei Dank, das hilft mir! – govo

4

wurde aufgrund dieses Problems stundenlang stecken aber endlich die Lösung.

Schritt # 1:

dependencies { 
compile 'com.android.support:multidex:1.0.0' 
} 

Schritt # 2:

defaultConfig { 
     multiDexEnabled true 
    } 

Schritt # 3:

public class AppController extends Application { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     MultiDex.install(this); 
    } 
} 

Glücklich Codierung!

3

Nach Lösung für mich gearbeitet:

  1. hinzufügen multiDexEnabled = true in Ihrem default Config

  2. kompilieren hinzufügen in Ihre Abhängigkeiten

  3. Application class extend MultiDexApplication statt nur Application

Verwandte Themen