2012-03-08 188 views
21

我有一個java項目,在Eclipse中運行它時工作得很好。當我嘗試將其導出到一個"JAR file""Runnable JAR file"創建.jar文件,但是當我雙擊它來嘗試運行它給了我一個錯誤,指出該方案運行Eclipse導出的jar時出現「找不到主類」錯誤

"Could not find the main class: package.MainClassName. Program will exit." 

正如我所說,我試圖導出到兩個JAR選項,我指定了正確的類,主要方法是,當我通過.jar文件中的實際文件看起來一切似乎是爲了 - 清單看起來像這樣:

Manifest-Version: 1.0 
Main-Class: package.MainClassName 
(blank line) 

並且位於META-INF文件夾中。有一個包含我的包名稱的文件夾,其中包含所有的.class文件,包括包含主要方法的類。我使用的一些圖像和文本文件也出現在jar文件中。

實際的程序不是太複雜 - 它是一個簡單的使用Swing的「蛇」遊戲(加上從Eclipse內部運行時的所有代碼)。

任何想法是什麼導致這個錯誤,我該如何解決它?讓我知道我是否應該提供任何其他信息。

+0

主類的完全限定名稱是什麼?它是'package.MainClassName'還是別的? – 2012-03-08 04:50:25

+0

它是snake.Controller。 – scaevity 2012-03-08 04:52:51

+0

['Manifesto'](http://sites.google.com/site/drjohnbmatthews/manifesto)是檢查您的清單的便捷方式。 – trashgod 2012-03-08 05:27:45

回答

6

好吧,所以我終於找到了它的工作。如果我使用JRE 6而不是7,那麼一切都很好。不知道爲什麼,但它的作品。

+1

Ahha,有一個版本衝突,你的eclipse使用更高的版本,然後是類路徑上的版本。它發生在大部分時間。 – 2012-03-08 06:43:49

+0

除了在eclipse中使用舊版本之外,還有什麼方法可以修復它? – scaevity 2012-03-08 06:46:46

+0

而是在環境變量的Eclipse和Path變量中選擇相同的版本。 – 2012-03-08 06:55:55

18

驗證您可以啓動應用程序那樣:

java -cp myjarfile.jar snake.Controller 

我剛纔讀當我雙擊它 - 這聽起來像您的操作系統配置問題。你在Windows資源管理器窗口中雙擊該文件?嘗試從控制檯/終端與命令

java -jar myjarfile.jar 

運行它進一步閱讀


該清單與一個新行結束。請檢查您的文件,缺少新線路會造成麻煩。

+0

抱歉,我忘了在上面提到它,但是清單是由Eclipse創建的,並且在最後包含一個空行(有時包括2)。 – scaevity 2012-03-08 06:04:34

5

你是否嘗試手動創建.jar文件而不是使用Eclipse。請嘗試以下步驟,希望這可以幫助:

考慮到你的目錄結構如下:

TicTacToe(Your Project Name I mean) 
|    |     | 
src   bin    manifest.txt 
      | | 
      icons tictactoe 

現在假設我的主類是BeginGame裏面包tictactoe,所以我將我的清單裏面寫。 TXT文件這件事情:

Main-Class: tictactoe.BeginGame 

千萬記住冒號:和包名之間的空間,即tictactoe,緊接着BeginGame按Enter鍵並保存該文件。

現在你的命令提示符下轉到bin文件夾的位置,我描述了我的身邊如下:

C:\Mine\Eclipse\TicTacToe\bin>jar -cfm ..\tictactoe.jar ..\manifest.txt tictactoe icons 
  • 這裏即..\tictactoe.jar的第一個參數是用來告訴創建tictactoe.jar一個升級,即在TicTacToe Folder之內。
  • 第二個參數..\manifest.txt表示manifest.txt文件位於上一級,即在TicTacToe Folder之內。
  • 第三和第四個參數tictactoeicons表示將這兩個文件夾都添加到.jar文件中,因爲它們被放置在bin文件夾中,因此它們按原樣使用。現在按下Enter鍵。

現在嘗試運行在Project Folder(TicTacToe文件夾,在我的情況下)內創建的.jar文件。

希望這會起作用。

1

您是否重命名了您的項目/主類(例如通過重構)?如果是,您的啓動配置可能設置不正確(例如,參考舊的主類或配置)。即使項目名稱出現在「導出可運行jar」對話框中,仔細檢查可能會發現一個不匹配的主類名稱。

轉到項目的「屬性 - >運行/調試設置」,並確保你的啓動配置設置爲項目的名稱權主類中設置爲(用於導出運行的JAR相同) name.space.of.your.project/YouMainClass

2

運行像這樣的命令行:

java -jar /path/to/your/jar/jarFile.jar 
+1

有人能解釋這個答案有什麼問題嗎?我不明白。這正是我用來運行一個jar文件,當我得到「無法找到主類錯誤」 – MobileMon 2014-05-01 11:50:29

+0

謝謝它只是與我合作 – 2016-05-24 22:26:27

+0

這工作對我來說,忘記了「 - 」在「jar」 – 2017-01-12 17:39:06

0

右鍵單擊該項目。轉到屬性。點擊運行/調試設置。現在刪除您嘗試運行的主類的運行配置。 現在,當你再次運行時,事情會很好。

0

對於NetBeans用戶是有這個問題是簡單的:

1.Go到項目,並單擊右鍵,選擇屬性

2.Click運行,還可以單擊瀏覽器。

3.選擇您想要首先出現的畫面。

0

前幾天我遇到了同樣的問題,花了我好幾天的時間才完成工作。 錯誤消息是「無法找到主類」,但我可以在其他Windows計算機上運行從Eclipse導出的可執行文件jar,而沒有任何問題。

解決方案是安裝相同版本的JRE的x64和x86版本。路徑環境變量指向x64版本。不知道爲什麼,但它對我有效。

相關問題