2011-02-02 60 views
4

我使用Eclipse的「導出 - > Java - > Runnable Jar文件」函數生成了一個非常簡單的可運行jar文件。我的HelloWorld類看起來是這樣的:Eclipse生成的Runnable jar文件不會執行?

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的罐子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中嘗試它嗎?

+0

因爲我最初發布這個問題後,我現在做這個動作的.jar使用Maven而不是試圖用Eclipse來完成。 – djangofan 2014-06-06 23:04:17

回答

8

在這個意義上,罐子永遠不會'可執行'。什麼這個罐子是良好的是:

java -jar YOURJAR.jar 

更新您提供的回溯是奇怪。看起來,Windows決定繼續前進,並用一些版本的Java啓動你的jar,但傳遞一個路徑名代替類名稱。我不知道這個故事是怎麼回事。

+0

該jar包含org.eclipse.jdt.internal.jarinjarloader類,因此它可以通過這種方式啓動,或者看起來應該是這樣。 (閱讀上面的清單文件條目) – djangofan 2011-02-02 23:44:00

2

在我的機器上卸載所有較早的java版本修復了我的問題。

在我的最後,我能夠使用命令行運行.jar文件,但不能使用默認的雙擊選項。後來後者再次工作

0

在我的情況下,我錯誤地沒有宣佈包含公共靜態void main()作爲公共類的類。聲明類作爲公衆能夠解決此問題的下一個出口爲通過Eclipse運行的JAR ...

希望這有助於...