2011-10-01 69 views
23

我使用找不到主類,程序將退出

jar cvfm MyJarName.jar manifest.txt *.class 

其創建的.jar文件提出一個可執行的JAR使用命令提示符在Windows 7中。但是,當我試圖打開它,我得到的是說

Could not find the main class: <ClassName>. Program will exit. 

然而,一個彈出窗口,當我在命令提示符下使用

java -jar jarName.jar 

,它工作正常。這是怎麼回事?我希望能夠雙擊它。

+0

向我們展示清單文件的內容 – adatapost

+0

我無法從您說明的內容中知道多少,但一般情況下,如果您的主類是「com.Main」,那麼Main.class需要存在於「 com「文件夾內的jar。 –

+0

[爲什麼它無法從jar文件加載主類清單屬性?](http://stackoverflow.com/questions/2591516/why-its-failed-to-load-main-class-manifest- – adatapost

回答

39

哈,我發現這個問題是我。使用jdk1.7做了我的程序,但是我安裝了jre6,我去升級到jre7,現在它工作正常:)

java -jar jarname.jar 

線是在命令提示符下工作,因爲我的Java路徑設置爲JDK的文件夾。

+9

+1自學:-) –

+2

我有同樣的問題,但我已經安裝了jre7,但由於我的應用程序是** 32位**我必須下載並安裝_jre7-i586(x86)_。感謝你的回答! –

0

提取jar並將jar內的清單內容與外部manifest.txt進行比較。您很可能會找到問題。

3

如果您使用的是JDK 1.6或更高版本,則可以通過e標誌Jar工具覆蓋清單屬性。 (閱讀 - Setting an Entry Point with the JAR Tool)

例子:

package pack; 

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

編譯和運行jar工具,

c:\>jar cfe app.jar pack.Test pack/Test.class 

調用應用

c:>java -jar app.jar 
-1

退房這樣的方式(工作在我的機器上):

讓文件是x.java

  1. 編譯文件的javac x.java
  2. 罐子CFE k.jar X x.class //k.jar是jar文件
  3. Java的罐子k.jar
2

所述清單特t文件必須以新行或回車結束。如果最後一行不以新行或回車結束,則不會正確解析。

0

我正面臨同樣的問題。我所做的是我右鍵單擊項目 - >屬性,並從「選擇/二進制格式」組合框,我選擇了JDK 6.然後,我做了清理和建立,現在當我點擊罐子,它工作得很好。

0

如果您使用較低版本的Java(示例Java1.5)構建源文件並嘗試運行具有較高版本Java(例如java 1.6)的程序/應用程序,則會出現此問題。 更好的解釋請參閱此鏈接。click here

相關問題