2016-10-24 1 views
0

Ich habe Bibliotheken, die AAR-Dateien sind. Nachdem ich den Root-Classle-Pfad 2.1.0 zu 2.2.1 geändert habe, erhalte ich NoClassDefFoundError-Fehler.NoClassDefFoundError nach der Aktualisierung Gradle 2.1.0 bis 2.2.1

Zum Beispiel: Ich erstelle eine neue Klasse in meiner AAR-Bibliothek nach dem ich synchronisieren und meine Hauptanwendung sehe meine Klasse, aber wenn ich Anwendung, in Runtime gibt es mir NoClassDefFoundError.

Ps: Nach der Aktualisierung, Gradle heruntergeladen 2.14.1.

threadid=1: thread exiting with uncaught exception (group=0xa4ca8b20) 
: java.lang.NoClassDefFoundError: com.gk.lib.ui.Utils 
:  at com.example.activities.MainActivity.onCreate(MainActivity.java:78) 
:  at android.app.Activity.performCreate(Activity.java:5231) 
:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 
:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
:  at android.app.ActivityThread.access$800(ActivityThread.java:135) 
:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
:  at android.os.Handler.dispatchMessage(Handler.java:102) 
:  at android.os.Looper.loop(Looper.java:136) 
:  at android.app.ActivityThread.main(ActivityThread.java:5001) 
:  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:785) 
:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
:  at dalvik.system.NativeStart.main(Native Method) 

in meiner MainActivity Klasse aufrufen i Verfahren mit statischen Methode wie folgt aus:

Utils.gkTestMethod(); 

Meine Utils Klasse:

import android.util.Log; 

public class Utils { 

    public static void gkTestMethod(){ 
     Log.v("Log","Log"); 
    } 
} 

Es spielt keine Rolle, was die Klasse ist, die ich genannt. Wenn ich eine neue Klasse erstelle, wird dieser Fehler angezeigt.

Danke.

+0

Fügen Sie die komplette stacktrace – Jens

+0

i meine Frage aktualisiert. Sie können sehen. @ Jens –

+0

Was ist in Ihrer MainActivity.java-Datei, Zeile 78? –

Antwort

0

über diesen Schnipsel in der Haupt build.gradle:

dependencies { 

    compile('com.gk.lib:common:1.0.0') { 
     transitive = true 
    } 

    compile('com.gk.lib:ui:1.0.0') { 
     transitive = true 
     exclude module: 'common' 
    } 

    compile('com.gk.lib:components:1.0.0') { 
     transitive = true 
     exclude module: 'common' 
     exclude module: 'ui' 
    } 

    // Other dependencies 
} 

Es scheint, dass components hängt von common und ui und ui hängt von common. Gibt es einen guten Grund, die transitiven Abhängigkeiten explizit auszuschließen und dann wieder einzufügen? Ich denke, das sollte funktionieren:

dependencies { 

    compile 'com.gk.lib:components:1.0.0' 

    // Other dependencies 
} 

Und IIRC common ist nicht transitiv.

+0

Ich tat es nicht Setzen Sie compile debug und geben Sie allgemeine Abhängigkeiten frei. Ich habe meinen Beitrag geändert, Sie können eine neue Version sehen. Ich unterscheide gängige Abhängigkeit, weil ich einige c-Datei auf Debug oder Release einschließen muss und diese sind unterschiedlich. –

+0

@ GörkemKaradoğan fügen Sie bitte das komplette und unmodifizierte 'build.gradle' jeder Bibliothek hinzu – nandsito

+0

Ich änderte meinen Beitrag, wie ich sagte, dass alle Bibliotheken grandle ähnlich sind. –

Verwandte Themen