Java NoClassDefFoundError

时间:2011-01-20 14:23:58

标签: java maven noclassdeffounderror

我正在一个“大型”Maven / Java项目中工作,无法理解我在运行应用程序时遇到的错误(编译正常)。我得到的错误代码是:

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”类,但在谷歌搜索后我无法找到该类应该位于何处。

任何提示?

编辑:使用JRE JDK 1.6.0_18运行(JAVA_HOME = C:\ Program Files \ Java \ jdk1.6.0_18)

3 个答案:

答案 0 :(得分:1)

它可能不是导致您的问题的原因,但是当JDK存储在“Program Files”下时,有时会出现您所看到的错误。 Java不喜欢文件系统路径中的空格。

答案 1 :(得分:0)

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

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

如果你想确认文件在那里,请打开像JD-Gui这样的程序中的jar,并查看Jar以确认。

答案 2 :(得分:0)

查看Java 6和7的javadoc,看来OSMBeanFactory(在你的堆栈跟踪中)已添加到7中。

Monitoring and Management Interface for the Java™ Platform (6)

Monitoring and Management Interface for the Java™ Platform DRAFT ea-b120 (7)