2011-01-20 5 views
0

Je travaille dans un projet Maven/Java "biggish" et je n'arrive pas à comprendre l'erreur que j'éprouve lors de l'exécution de l'application (elle compile OK). Le code d'erreur que je reçois est:Java NoClassDefFoundError

java.lang.NoClassDefFoundError: Could not initialize class com.sun.management.OperatingSystem 
    at com.sun.management.OSMBeanFactory.getOperatingSystemMXBean(OSMBeanFactory.java:30) 
     at sun.management.ManagementFactory.getOperatingSystemMXBean(ManagementFactory.java:100) 
     at sun.management.ManagementFactory.createPlatformMBeanServer(ManagementFactory.java:308) 
     at java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:504) 
     at com.sun.xml.internal.ws.server.JMXAgent.<init>(JMXAgent.java:49) 
     at com.sun.xml.internal.ws.server.JMXAgent.getDefault(JMXAgent.java:77) 
     at com.sun.xml.internal.ws.server.WSEndpointImpl.<clinit>(WSEndpointImpl.java:84) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:169) 

De l'apparence de celui-ci, il semble que la machine virtuelle ne trouve pas la classe « com.sun.management.OperatingSystem », mais après googler je ne peux pas autour de savoir où est-ce classe supposée être située.

Des indices?

EDIT: Courir avec JRE 1.6.0_18 JDK (JAVA_HOME = C: \ Program Files \ Java \ jdk1.6.0_18)

+0

Sous quelle version de Java exécutez-vous l'application? –

+0

Pouvez-vous également publier vos parties pertinentes de votre script Maven et Start-up. – Sean

Répondre

1

Il pourrait ne pas être ce qui est causant votre problème, mais des erreurs comme celle que vous voyez peuvent parfois se produire lorsque le JDK est stocké sous "Program Files". Java n'aime pas les espaces dans le chemin du système de fichiers.

0

com.sun.management est un package java sans papier. La classe OperatingSystem est l'implémentation de OperatingSystemMXBean. Si vous téléchargez le code Javasource, vous pourrez voir la classe ici.

En ce qui concerne l'emplacement de ce fichier, il devrait être dans votre paquet JRE standard. Assurez-vous que votre application pointe vers le JRE approprié. En Java 5/6, la classe peut être trouvée dans le fichier rt.jar.

Si vous voulez confirmer le fichier est là, Ouvrez le pot dans le programme comme JD-Gui et jetez un oeil autour du Jar pour confirmer.

+0

Yup, OperatingSystem.class et tous les autres fichiers sous "rt.jar \ com \ sun \ gestion - archive ZIP" sont là. Donc, il semble que l'erreur n'est pas produite par – obaqueiro

Questions connexes