Eclipse生成的Runnable jar文件不会执行?

时间:2011-02-02 23:24:50

标签: eclipse jar executable-jar

我使用Eclipse的“Export - > Java - > Runnable Jar File”函数生成了一个非常简单的可运行jar文件。我的HelloWorld类看起来像这样:

import javax.swing.JFrame;
public class HWorld extends JFrame {
  public static void main(String[] args) {
    new HWorld();
  }
  public HWorld() {
    this.setSize(200, 100);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setTitle("Hello World!");
    this.setVisible(true);
  }
}

现在,在生成.jar文件后,使用命令“java -jar HWorld.jar”从命令行运行良好

但是,当我尝试自己执行jar时(据说应该可以工作)我得到以下错误,我不知道为什么:

E:\Eclipse\workspace>HWorld.jar
Exception in thread "main" java.lang.NoClassDefFoundError: E:\Eclipse\workspace\HWorld/jar
Caused by: java.lang.ClassNotFoundException: E:\Eclipse\workspace\HWorld.jar
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: E:\Eclipse\workspace\HWorld.jar.  Program will exit.

我的清单看起来像这样:

Manifest-Version: 1.0
Rsrc-Class-Path: ./
Class-Path: .
Rsrc-Main-Class: HWorld
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

对我来说唯一看起来很可疑的是这个(因为.jar不是.class):

Could not find the main class: E:\Eclipse\workspace\HWorld.jar

寻找想法或想法,甚至回答!为了获得高质量的答案,我试图提供尽可能多的信息。这个帖子暗示它应该有效但不回答我的问题:http://forums.oracle.com/forums/thread.jspa?threadID=2152988。其他人可以在他们的Eclipse中尝试吗?

3 个答案:

答案 0 :(得分:9)

从这个意义上说,罐子永远不会“可执行”。这个罐子的好处是:

java -jar YOURJAR.jar

更新您提供的回溯非常奇怪。似乎Windows决定继续使用某个版本的Java启动你的jar,但是在类名的位置传递一个路径名。我不知道故事是什么。

答案 1 :(得分:2)

在我的机器上卸载所有旧的Java版本为我解决了这个问题。

在我结束时,我能够使用命令行运行.jar文件,但不能使用默认的双击选项。之后后者再次工作

答案 2 :(得分:0)

就我而言,我没有将包含public static void main()的类声明为公共类。将该类声明为public后能够通过eclipse将下一个导出解析为runnable jar ...

希望这会有所帮助......