从eclipe获取可执行Java程序

从eclipe获取可执行Java程序,java,eclipse,ubuntu,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 "ma

我的目的是测试一个小程序,比如

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上,而不设置任何类路径吗?

您需要以
java-jar-World.jar
的形式运行
.jar
文件。另外,您的
.jar
文件中需要一个文件,
META-INF/MANIFEST.MF
带有
主类:
头,告诉Java该
.jar
中要执行的类

Eclipse可以适当地打包您的代码并生成此标头,但默认情况下不会这样做。您需要在
File>Export>Java>JAR
下查看它的JAR设置。(根据,这可能已经过时了。)还有一种方法可以告诉Eclipse在构建时自动生成这样一个JAR


还要记住,在使用第三方库时,这是不够的。不知道Eclipse是否对此有任何贡献。您必须设置
类路径:
清单条目,或者它可能更方便使用,或者是像这样的独立工具。

是否尝试将项目导出为可执行jar?我刚刚查看了World.jar,其中有一个文件夹META-INF,其中包含文件manifest.MF和World.java。MANIFEST.MF包含以下信息:清单版本:1.0密封:true主类:World@Fendrix然后应该只需要使用
java-jar-World.jar运行它,然后我在线程“main”中得到异常java.lang.UnsupportedClassVersionError:World:不支持的主版本。次版本51。0@Fendrix那显然是另一个错误。谷歌就是这样。我猜您已经将Eclipse设置为使用JDK 7,但您只在全局安装了JRE 6。这是我愚蠢的错误。。。只有一个问题,为什么仅仅编写java World.jar还不够