2013-07-23 223 views
0

我爲朋友製作了一個小程序,當我在Windows機器上運行它時,它工作正常。然而,當我在他的運行它,我得到Java程序適用於Windows,但不適用於Mac

Exception in thread "main" java.lang.NoClassDefFoundError: SupplierControl/jar 
Caused by: java.lang.ClassNotFoundException: SupplierControl.jar 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 

不知道爲什麼它會在一個工作,而不是其他

感謝

+1

由於錯誤消息指出您缺少庫。 – hexafraction

+0

你能告訴我們你如何在Mac和Windows上運行?這個錯誤表明java認爲jar文件是你想運行的類的名字,而不是像你在-jar或類路徑中指定的類文件的容器。 – tuckermi

+0

這個程序是一個jar文件嗎?你是從控制檯還是通過文件瀏覽器啓動它? – hybridtupel

回答

3

我敢打賭,你想用一個看起來命令運行像這樣:

java SupplierControl.jar 

請注意,你傳遞給java命令什麼必須是一個完全合格的類名。會發生什麼情況是Java將在包SupplierControl中尋找名爲jar的類。這不是你的意思。

如果它是一個可執行的JAR文件,然後運行它:

java -jar SupplierControl.jar 
1

的問題是,該命令運行的方式。假設它是一個「可執行」的JAR文件,你應該運行它:

$ java -jar SupplierControl.jar 

,但你似乎已經離開了-jar說法。


如果你離開了-jar,該java命令解釋SupplierControl.jar作爲一個合格的類名;即包「SupplierControl」中稱爲「jar」的類。當然,它找不到相應的「.class」文件...並因此得到一個NoClassDefFoundError

0

你應該用命令

$ java -jar SupplierControl.jar 

然後你正在執行的罐子,都應該很好地運行它。

相關問題