2013-03-17 29 views
-1

我的目的是要測試一個小程序,像由Eclipe獲取可執行Java程序

public class World 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("Foobar World"); 
    } 
} 

對終端執行。我在計算器中使用了很好解釋的文檔 - 如何在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. 

是類路徑導致此錯誤嗎?我以爲日食安排這一切對我來說....執行應該沒事的

-rw-rw-r-- 1 Foo Foo 1254 Mar 17 19:40 World.jar 

我怎麼會錯過,一旦它的作品我能不能用相同的操作系統的文件複製到另一臺電腦沒有設置建立任何課程路徑?

+1

您是否試圖將您的項目導出爲可執行的jar? – mre 2013-03-17 19:00:56

回答

3

您需要運行一個.jar文件作爲java -jar World.jar。另外,您的.jar文件需要一個文件,META-INF/MANIFEST.MF帶有一個Main-Class:標題,告訴Java該.jar內執行的是哪個類。

Eclipse 可以適當打包您的代碼並生成此標頭,但默認情況下不會執行此操作。您需要在其JAR設置中撥打File > Export > Java > Jar。 (根據this FAQ,這可能會過時。)也可能有一種方法可以告訴Eclipse在構建時自動生成這樣的JAR。

還要記住,使用第三方庫時這還不夠。不知道Eclipse是否有這方面的任何東西。您必須設置Class-Path:清單條目,或者使用Maven's shade plugin或獨立工具(如Jar Jar Links)可能會更方便。

+0

我只是看着World.jar,文件MANIFEST.MF和World.java就是META-INF文件夾。 MANIFEST.MF包含以下信息:Manifest-Version:1.0 Sealed:true Main-Class:World – Fendrix 2013-03-17 19:05:32

+1

@Fendrix然後它應該只需要用'java -jar World.jar'運行它 – millimoose 2013-03-17 19:06:25

+0

然後我得到Exception在線程「main」java.lang.UnsupportedClassVersionError:World:Unsupported major.minor version 51.0 – Fendrix 2013-03-17 19:10:47