2016-11-28 2 views
1

Je suis bloqué par un problème étrange où ma machine virtuelle Java java.lang.NoClassDefFoundError. Toute aide pour identifier le problème est grandement appréciée.java.lang.NoClassDefFoundError: Impossible d'initialiser la classe | bloc statique

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 
    } 
} 

J'ai 3 classes AccessorFactory.class, BillAccessor.class et BillAccessor $ BillInnerClass.class. Tous les 3 sont dans le même fichier jar et tous sont présents dans le classpath.

J'ai récemment modifié quelque chose dans la classe BillAccessor $ BillInnerClass et remplacé ce fichier dans le fichier jar et redémarré l'instance d'application dans le serveur (jboss).

restart post Je reçois

java.lang.NoClassDefFoundError: Could not initialize class AccessorFactory 

classe AccessorFactory présents dans le fichier jar et dans le chemin de la classe. Rien d'autre n'est changé, sauf que j'ai remplacé BillAccessor $ BillInnerClass.

+0

Avez-vous essayé (a) d'arrêter JBoss, (b) de reconstruire tout le pot, (c) de le déposer dans JBoss, et enfin (d) de redémarrer JBoss? – dcsohl

+0

Attention aux excitations précédentes. Très probablement votre initialiseur statique a échoué. Par exemple que vous obtenez une exception dans 'Class.forName' – eckes

Répondre

0

NoClassDefFoundError signifie généralement que la machine virtuelle Java a localisé la classe (par opposition à ClassNotFoundExceptioin), mais qu'elle ne peut pas la charger en raison de l'absence de classes dépendantes.

Vous ne savez pas si vous avez essayé de reconstruire l'ensemble du fichier jar (avec les 3 classes) et utilisez le nouveau fichier jar dans JBoss?