2015-08-28 96 views
3

我寫了一個程序,其中程序中使用了各種java庫。我使用NetBeans創建了我的程序的jar文件。現在,如果我在任何其他位置使用該jar,那麼我將不得不手動包含所有jar庫。構建來自不同罐子的可執行文件

有什麼辦法讓所有的依賴庫應該用我的程序的jar來構建一個單獨的jar而不是那麼多的jar文件嗎?

我知道有程序將jar轉換爲exe,它們也做同樣的事情,但我想把最後一個文件轉換成jar格式,這樣它也可以在Linux上運行。

謝謝

+1

你是如何構建你的jar?這當然是可能的(它被稱爲fat-jar或者jar-with-dependencies),但是最簡單的創建方法取決於你的構建工具。 – Edd

+0

似乎你並沒有構建**可執行文件**(如'.exe'),而是將所有內容都包裝在一個胖罐子裏。如果是這樣的話,這個問題至少要問一次。 [是否有可能將所有的jar依賴包打包在一個大的jar包中?](http://stackoverflow.com/questions/1059851/is-it-possible-to-package-all-the-jar-dependencies-in-one -big-jar) – Javier

回答

3

是的,它可以做到。既然你使用Netbeans,這個article可能會幫助你。

+1

你會如何用自己的話來描述必要的步驟? (沒有鏈接到外部的stackoverflow) – slartidan

+0

@slartidan對不起,我鏈接了一篇文章,因爲它總結了所有步驟稍長。 – Amila

+0

[元 - 答案只包含其他鏈接真的很好的答案?](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good -answers)。 – Javier

5

您可以根據One-Jar

一JAR提供了一個知道如何從一個罐子加載類和資源檔案內,而不是從文件系統中的罐子定製的ClassLoader。它根據歸檔的內部結構發現依賴jar文件,沒有需要執行此操作的自定義代碼。 One-JAR檔案可以使用Ant或Maven2構建。應用程序可以使用Java的罐子我-app.jar

使用Maven運行:您需要更新plugins部分pom.xml

<plugin> 
     <groupId>org.dstovall</groupId> 
     <artifactId>onejar-maven-plugin</artifactId> 
     <version>1.4.4</version> 
     <executions> 
      <execution> 
      <goals> 
       <goal>one-jar</goal> 
      </goals> 
      </execution> 
     </executions> 
    </plugin> 

而且在pom.xml

<pluginRepository> 
     <id>onejar-maven-plugin.googlecode.com</id> 
     <url>http://onejar-maven-plugin.googlecode.com/svn/mavenrepo</url> 
</pluginRepository> 

更新pluginRepositories節當您執行mvn package時,您將獲得yourappname-one-jar.jar並且您可以運行它java -jar yourappname-one-jar.jar

相關問題