2017-09-21 4 views
0

Beim Debuggen unseres Produkts, habe ich bereits einen NoClassDefFoundError gefunden, der mir jedoch komisch ist - ich bemerkte folgende Ausgabe aus dem Klassenladeprotokoll (durch Einschalten von -verbose: class):NoClassDefFoundError - Klasse geladen nach ausführlich: Klasse

[Loaded com.xxx.yyy.preferences.PreferencesMgr from file:/C:/Users/xxx/.gradle/caches/zzz.jar 

PreferencesMgr ist nur die Klasse, die NoClassDefFoundError Ursachen:

java.lang.NoClassDefFoundError: Could not initialize class com.xxx.yyy.preferences.PreferencesMgr 

So scheint es, dass jvm tatsächlich bereits die Klasse erfolgreich geladen. Warum gibt es dann NoClassDefFoundError? Welche Möglichkeiten?

+0

Vielleicht fehlen einige Abhängigkeiten. Vollständiges Protokoll anzeigen – talex

+0

Das Protokoll ist zu groß, um es hier zu veröffentlichen. Während ich durch das Protokoll gehe, finde aber keine weiteren Ausnahmen. – qingjinlyc

+0

'NoClassDefFoundError' könnte hier eine andere Klasse angeben, die während der Initialisierung von PreferencesMgr benötigt wird. Überprüfen Sie die Initialisierungsreihenfolge für einige Informationen. – cooltoad

Antwort

0

Die Dinge sind jetzt klar. PreferenceMgr hängt von einem anderen Glas, das in bestimmten Version Bug hat. In Großbuchstaben setzen wir die Bug-Version des Jars. Beim Laden von PreferenceMgr triggert der Klassenlader den Fehler in MAUtils und führt zu NoClassDefFoundError.

0

Könnte ein Abhängigkeitsproblem sein, ein anderes Paket könnte auch eine PreferenceMgr-Klasse definieren, die Konflikte verursacht. Mit Gradle können Sie einige Befehle verwenden, um die Abhängigkeiten zu überprüfen: Check this post

Verwandte Themen