我正在一个“大型”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)
答案 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)