2016-11-28 6 views
1

Ich bin mit einem seltsamen Problem fest, wo meine JVM java.lang.NoClassDefFoundError wirft. Jede Hilfe bei der Identifizierung des Problems wird sehr geschätzt.java.lang.NoClassDefFoundError: Die Klasse | konnte nicht initialisiert werden Statischer Block

public class AccessorFactory 
{ 
private static Map classMap = null; 
    static 
    { 
     classMap = new HashMap(100); 
     classMap.put("bills", Class.forName("com.example.BillAccessor")); 
    } 
} 

public class BillAccessor 
{ 
    class BillInnerClass 
    { 
     //some code 
    } 
} 

Ich habe 3 Klassen AccessorFactory.class, BillAccessor.class und BillAccessor $ BillInnerClass.class. Alle 3 sind in der gleichen JAR-Datei und alle sind im Klassenpfad vorhanden.

Ich habe vor kurzem etwas in BillAccessor $ BillInnerClass-Klasse geändert und diese Datei in der JAR-Datei ersetzt und Anwendungsinstanz in Server (jboss) neu gestartet.

Beitrag Neustart Ich erhalte

java.lang.NoClassDefFoundError: Could not initialize class AccessorFactory 

AccessorFactory Klasse in der JAR-Datei und im Klassenpfad. Nichts anderes wird geändert, außer dass ich BillAccessor $ BillInnerClass ersetzt habe.

+0

Haben Sie versucht, (a) JBoss herunterzufahren, (b) das ganze Glas neu zu bauen, (c) es in JBoss fallen zu lassen und (d) JBoss neu zu starten? – dcsohl

+0

Achten Sie auf frühere Ausnahmen. Höchstwahrscheinlich ist Ihr statischer Initializer fehlgeschlagen. Zum Beispiel, dass Sie eine Exception in 'Class.forName' erhalten – eckes

Antwort

0

NoClassDefFoundError bedeutet normalerweise, dass die JVM die Klasse lokalisiert hat (im Gegensatz zu ClassNotFoundExceptioin), aber nicht geladen werden kann, weil keine abhängigen Klassen vorhanden sind.

Nicht sicher, wenn Sie versucht haben, das gesamte Glas (mit allen 3 Klassen) neu zu erstellen und das neue Glas in JBoss verwendet?

Verwandte Themen