从eclipse获取可执行的Java程序

时间:2013-03-17 18:59:01

标签: java eclipse ubuntu

我的目的是测试像

这样的小程序
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而无需设置任何类路径吗?

1 个答案:

答案 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 pluginJar Jar Links等独立工具可能更方便。