我的目的是测试像
这样的小程序public class World
{
public static void main(String[] args)
{
System.out.println("Foobar World");
}
}
在终端上执行。我在stackoverflow中使用了解释良好的文档 - 如何在Eclipse中构建Java项目?。但是在执行World.jar时....
$ java World
Exception in thread "main" java.lang.NoClassDefFoundError: World
Caused by: java.lang.ClassNotFoundException: World
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: World. Program will exit.
类路径是否导致此错误?我以为eclipse会为我安排所有这些......执行应该是正确的
-rw-rw-r-- 1 Foo Foo 1254 Mar 17 19:40 World.jar
我会错过什么,一旦它可以工作,我可以将文件复制到具有相同操作系统的另一台PC而无需设置任何类路径吗?
答案 0 :(得分:3)
您需要将.jar
文件作为java -jar World.jar
运行。此外,您的.jar
文件中需要一个文件META-INF/MANIFEST.MF
,其中Main-Class:
标题告诉Java要执行.jar
内的哪个类。
Eclipse 可以适当地打包你的代码并生成这个标题,但默认情况下它不会这样做。您需要在File > Export > Java > Jar
下的JAR设置中查找。 (根据this FAQ,可能已经过时了。)可能还有一种方法可以告诉Eclipse在构建时自动生成这样的JAR。
另外请记住,使用第三方库时,这还不够。不知道Eclipse是否有这方面的东西。您必须设置Class-Path:
清单条目,或者使用Maven's shade plugin或Jar Jar Links等独立工具可能更方便。