0

我在一个“大”的 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) 运行

4

3 回答 3

1

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

于 2011-01-20T16:00:35.290 回答
0

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

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

如果要确认文件是否存在,请在JD-Gui等程序中打开 jar 并查看 Jar 以确认。

于 2011-01-20T14:31:26.890 回答
0

查看 Java 6 和 7 的 javadocs,似乎在 7 中添加了 OSMBeanFactory(在您的堆栈跟踪中)。

Java™ 平台的监控和管理接口 (6)

Java™ 平台的监控和管理接口草案 ea-b120 (7)

于 2011-01-20T14:36:49.510 回答