2011-01-20 84 views
0

我在一个“biggish”Maven/Java项目中工作,无法理解我在运行应用程序时遇到的错误(它编译正常)。错误代码我得到的是: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) 

从它的外观,它似乎VM未找到“com.sun.management.OperatingSystem”类,但周围的Googling后,我无法找出是班级应该被定位。

任何提示?

编辑:与JRE JDK 1.6.0_18运行(JAVA_HOME = C:\ Program Files文件\爪哇\ jdk1.6.0_18)

+0

在哪个版本的Java中运行应用程序? – 2011-01-20 14:37:29

+0

你是否可以发布你的maven和启动脚本的相关部分。 – Sean 2011-01-20 14:45:32

回答

1

加入这也许不是什么导致您的问题,但是当JDK存储在“程序文件”下时,有时会发生类似于您所看到的错误。 Java不喜欢文件系统路径中的空格。

0

com.sun.management是一个未记录的java包。 OperatingSystem类是OperatingSystemMXBean的实现。如果你下载了JAVA源代码,你将能够在那里看到课程。

至于这个文件的位置,它应该在你的标准JRE包中。确保您的应用程序指向正确的JRE。在Java 5/6中,该类可以在rt.jar文件中找到。

如果您想确认文件存在,请在程序中打开罐子,如JD-Gui,然后查看Jar以确认。

+0

Yup,OperatingSystem.class和“rt.jar \ com \ sun \ management - ZIP归档”下的所有其他文件都在那里。所以看起来错误不是由那个 – obaqueiro 2011-01-20 15:16:49