2013-07-23 147 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 

然后你正在执行的罐子,都应该很好地运行它。

相关问题