2011-01-20 122 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