2016-11-16 172 views
2

我有一個簡單的例子的IntelliJ構建錯JAR:無法找到或加載主類

這是在哪裏的IntelliJ我想建立JAR文件中創建
public class FileSystemReadFile { 
    public static void main(String[] args) throws IOException { 
     System.out.println("Reading the file" + args[0]); 
    } 
} 

;所以我做了什麼:

  1. 添加與依賴關係(大概我有一些)的神器;
  2. 確保MANIFEST.MF位於src\main\resources\META-INF\,因爲它已在此處的某處提及。
  3. 運行神器打造這給了我JAR文件中進行文件夾和我運行的JAR文件說我「找不到或無法加載主類」
    java <name>.jar

您可能會看到主類加入到清單並且清單的位置也很好。

Project structure

當我打開創建JAR文件,我看到了同樣的清單內容,我看到很多的獨立模塊,但我看不到我的課!

enter image description here

我懷疑這是一個原因。有任何想法嗎?

+0

你的課是屏幕截圖底部的第五個文件。 – yole

回答

2

不知道IntellJ是什麼,但我重新構建了文物,並沒有問題。

hadoop jar <Jar-name> 
java -jar <Jar-name> 

一切工作正常。

+0

感謝張貼解決方案 – Stepan

+0

我收到錯誤「沒有主要清單屬性,在jarname.jar」 我發現解決方案https://stackoverflow.com/questions/20952713/wrong-manifest-mf-in-intellij-idea-created -罐 – mesutpiskin

2

如果您在應用程序中包含任何已簽名的JAR,然後使用IntelliJ構建工件,它將提取JARS並將它們與您的編譯輸出捆綁在一起。

然後這會導致JAVA安全異常。我已經看到了與Eclipse Paho和Bouncy Castle簽署的這個協議。

您可以使用jarsigner工具檢查您正在使用的任何庫JAR是否已簽名。

jarsigner -verify -verbose <path to library JAR> 

更改您的IntelliJ工件設置,以便它們被捆綁爲庫而不是被提取。如您所期望的那樣,提取會使證書無效。

See how Paho and BCP are not extracted during artifact creation

嘗試創建一個只有主虛擬項目。一次添加1個庫JAR(您正在嘗試構建)。每次構建一個輸出JAR直到Main中斷。我就是這樣找到的。

IntelliJ應該警告你.....

相關問題