[英]Create an excutable jar in IntelliJ IDEA
我正在使用IntelliJ IDEA 12.1.3。 我有一個模塊,我正在嘗試按照此處給出的步驟將其轉換為jar。 我構建了jar文件,然后將jar文件移到了D:/。 如果我嘗試運行此jar,則會收到以下消息:
無法從jar加載Main-Class清單屬性
如果我使用java -classpath jar com.code.TestCase
運行它,它會完美運行。
為什么會這樣? 我使用IntelliJ IDEA創建了jar。 在那個jar中,它具有我添加的所有外部庫的所有代碼。
在src清單文件中:
Manifest-Version: 1.0
Main-Class: com.code.TestCase
但是jar的清單文件內容為:
Manifest-Version: 1.0
Build-Jdk: 1.6.0
Built-By: ubuntu
Created-By: Apache Maven
Archiver-Version: Plexus Archiver
Name: org.apache.log4j
Implementation-Vendor: "Apache Software Foundation"
Implementation-Title: log4j
Implementation-Version: 1.2.15
為什么沒有在jar文件MANIFEST.MF中添加Main-Class
,但是在src中包含Main-Class
?
我遇到了同樣的問題,並發現了Intellij如何自動填充清單路徑的修復程序和/或錯誤。
智能用戶界面
創建工件以創建jar文件時,IntelliJ會自動填充當前清單所在的路徑。
例如,在工件創建頁面中選擇Main-Class之后,Intellij將自動添加以下路徑\\ src \\ java \\ META-INF \\ MANIFEST.MF。 出於某種原因,build命令從不采用提到的MANIFEST.MF文件。 它從頭開始創建一個沒有Main-Class定義的內容,這導致“無法加載Main-Class”
如果使用IntelliJ UI創建jar工件; 通過將自動填充路徑更改為/$PROJECT_DIR/src/
來刪除該自動填充路徑,然后單擊“確定”。
默認情況下的示例:
現在這是更改后的樣子:
手動修復以輸入正確的MANIFEST.MF文件
在IntelliJ項目上,打開.idea \\ artifacts \\ _jar.xml
確保包含
<element id="directory" name="META-INF">
<element id="file-copy" path="$PROJECT_DIR$/src/META-INF/MANIFEST.MF" />
</element>
一旦執行此操作,您可能需要重新加載intelliJ,以便它可以對.xml文件進行更改
對我來說,這發生在存在不同結構的Maven項目中(即src / main / java / ..)。
我正在將OSX 10.9.2與IntelliJ 12.1.6版一起使用
希望能有所幫助。
重要規則之一是清單文件必須以換行符或回車符結尾。 如果不存在,請立即添加。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.