0

我为朋友做了一个小程序,当我在我的 Windows 机器上运行它时,它运行良好。但是,当我在他身上运行它时,我得到了

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)

不知道为什么它会在一个而不是另一个上工作

谢谢

4

3 回答 3

3

我敢打赌,您正在尝试使用如下所示的命令运行它:

java SupplierControl.jar

请注意,您传递给java命令的内容必须是完全限定的类名。jar发生的事情是 Java 将在包中寻找一个名为的类SupplierControl。这不是你的意思。

如果它是一个可执行的 JAR,那么运行它:

java -jar SupplierControl.jar
于 2013-07-23T14:46:14.537 回答
1

问题在于命令的运行方式。假设它是一个“可执行”JAR 文件,您应该将其运行为:

$ java -jar SupplierControl.jar

但你似乎忽略了这个-jar论点。


如果省略-jar,该java命令将解释SupplierControl.jar为合格的类名;即包“SupplierControl”中一个名为“jar”的类。当然,它找不到相应的“.class”文件......NoClassDefFoundError结果你会得到一个。

于 2013-07-23T14:46:26.130 回答
0

您应该使用命令运行它

$ java -jar SupplierControl.jar

然后你正在执行 jar,一切都应该很好。

于 2013-07-23T14:48:32.943 回答