我寫了一個程序,其中程序中使用了各種java庫。我使用NetBeans創建了我的程序的jar文件。現在,如果我在任何其他位置使用該jar,那麼我將不得不手動包含所有jar庫。構建來自不同罐子的可執行文件
有什麼辦法讓所有的依賴庫應該用我的程序的jar來構建一個單獨的jar而不是那麼多的jar文件嗎?
我知道有程序將jar轉換爲exe,它們也做同樣的事情,但我想把最後一個文件轉換成jar格式,這樣它也可以在Linux上運行。
謝謝
我寫了一個程序,其中程序中使用了各種java庫。我使用NetBeans創建了我的程序的jar文件。現在,如果我在任何其他位置使用該jar,那麼我將不得不手動包含所有jar庫。構建來自不同罐子的可執行文件
有什麼辦法讓所有的依賴庫應該用我的程序的jar來構建一個單獨的jar而不是那麼多的jar文件嗎?
我知道有程序將jar轉換爲exe,它們也做同樣的事情,但我想把最後一個文件轉換成jar格式,這樣它也可以在Linux上運行。
謝謝
您可以根據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
如果你正在使用maven,這個maven-shade-plugin是你正在尋找的:https://maven.apache.org/plugins/maven-shade-plugin/
你是如何構建你的jar?這當然是可能的(它被稱爲fat-jar或者jar-with-dependencies),但是最簡單的創建方法取決於你的構建工具。 – Edd
似乎你並沒有構建**可執行文件**(如'.exe'),而是將所有內容都包裝在一個胖罐子裏。如果是這樣的話,這個問題至少要問一次。 [是否有可能將所有的jar依賴包打包在一個大的jar包中?](http://stackoverflow.com/questions/1059851/is-it-possible-to-package-all-the-jar-dependencies-in-one -big-jar) – Javier