簡體   English   中英

在IntelliJ IDEA中創建一個可執行的jar

[英]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/來刪除該自動填充路徑,然后單擊“確定”。

默認情況下的示例:

默認的IntelliJ Jar工件設置

現在這是更改后的樣子:

固定的IntelliJ工件設置

手動修復以輸入正確的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM