2012-06-23 54 views
5

當我嘗試運行在IntelliJ中創建的jar文件時,我遇到了問題。
我遵循這裏列出的步驟:How to build jars from IntelliJ properly?,並使用IntelliJ搜索範圍很廣的其他人,但沒有找到解決方案。
在菜單項目結構>工件部分我有包和主類的名稱,我也嘗試指定'類路徑'位使用相對和絕對路徑源文件和.class文件(這似乎隱藏在IntelliJ Project顯示樹中),但即使是所有這些(我也確保在每次更改內容時重新生成jar),我得到「無法找到主類,程序將退出」。當我嘗試運行jar時發出消息。沒有找到主類,IntelliJ構建一個罐子

在主項目文件夾中,有src和out。
出包含「生產」與包樹和類文件
出來還包含「文物」與jar文件夾,JAR可執行
src包含圖像的文件夾中,META-INF和包樹。
在封裝所述第一文件夾中包含的主類,所以SRC/ravelDemo/RavelDemoMain.java

在項目設置>工件,主類被列爲ravelDemo.RavelDemoMain
目前,類路徑是出\ production \ RavelSequence v1.03 \ ravelDemo \,但這個和我指定的其他類路徑(或留空)似乎並沒有指向正確的位置。 (RavelSequence v1.03是該項目的名稱)。

我在做什麼錯?

+0

查看這些截屏視頻:http://www.screenr.com/Eyg8,http://www.screenr.com/FWM8。如果您可以通過類似的步驟重現問題,請將示例項目添加到問題中。 – CrazyCoder

+0

感謝您的回覆!這是一個非常方便的網站。這裏是我得到的:http://www.screenr.com/EMl8 – sideways8

+0

這裏是一個示例項目從頭開始創建相同的問題,仿照你的樣本:http://www.screenr.com/6Ml8 – sideways8

回答

3

根據討論,上面的註釋顯示IntelliJ IDEA正在構建有效的可執行jar,並且在Manifest中正確指定了主類,當使用項目目標從命令行執行java -jar ...命令用戶機器上的JDK版本。

問題是,它不能在雙擊@sideways8系統上工作。這可能是由於Windows註冊表中損壞的默認Java安裝或錯誤的.jar文件類型關聯造成的。這是機器特定的問題,因爲我沒有問題在我的系統上通過雙擊運行共享項目jar

要解決此問題,您可以嘗試從Control Panel上卸載此計算機上存在的所有Java版本。 Programs and Features,然後從頭開始安裝新的JDK,以便它是系統上唯一的JDK,並且該文件類型由它處理。

我用Total Commander它有一個很好的功能,可查看/編輯文件關聯(File | Associate With...),這裏是.jar協會是如何顯示的,當我按Edit type...

jar file type

+0

好的,我正在下載一個新的jdk。 如果我試圖與其他人分享這個罐子,他們是否會遇到同樣的問題,根據您的經驗?有沒有辦法用jar打包相應的jdk,以便不擔心繫統的本地環境? – sideways8

+0

這是非常罕見的問題,大多數安裝了Java的用戶將能夠運行你的應用程序。請注意,您可能希望定位JDK 1.6版本,因爲它可能仍然是許多機器的默認設置。如果您使用JDK 1.7構建,那麼安裝了JDK 1.6的用戶將無法運行您的應用程序。您可以通過將目標JDK更改爲1.6或在'Settings'中添加'-source 1.6 -target 1.6'選項來修復它。 '編譯器'| 'Java Compiler',**其他命令行參數**。 – CrazyCoder

+0

如果您想100%確定您的應用程序在目標機器上運行,請將其捆綁到JRE中,或者將其包裝到安裝程序中,以驗證該機器是否具有運行應用程序所需的最低版本JDK/JRE以及下載/如果系統不符合您的要求,則自動安裝它。 – CrazyCoder

0

我有同樣的問題。這個jar文件是用IntelliJ IDEA或其他IDE創建的。我發現在我的情況下,我的電腦上安裝了兩個版本的java(java 6 & java 8)。 這是系統配置錯誤的問題。因此請刪除您擁有的任何Java版本並重新安裝,並解決問題。