2010-01-09 160 views
13

我已經添加了一些外部庫到我的Java項目(在NetBeans中)。
是否可以將外部jar庫放到java歸檔文件中(而不是將它們放入單獨的(例如)「lib」目錄中)?將外部庫添加到JAR中?

+0

什麼你的意思是'到java檔案'? – danben 2010-01-09 17:19:35

+3

我猜賈尼想把所有的jar(庫)放入一個,只有一個jar。 – Pierre 2010-01-09 17:21:06

回答

4

當然可以。有幾個開源項目可以通過包含所有依賴關係的「捆綁包」進行下載。
你需要提取所有的罐子,然後再將它們打成一個文件。
用Ant來做這件事的例子可以看出here

1

JarJar項目允許您將依賴jar包打包到一個jar文件中進行分發。

該項目提供了一個ant任務來執行包裝,並且由於NetBeans項目在構建過程中使用Ant,您應該能夠相當容易地將它集成到您​​的構建中。

0

如果是將罐子裝入罐子中,則始終爲戰爭或耳朵文件中的網絡應用程序執行此操作。 如果你的應用程序是獨立的,你可以解壓罐子,並將它們一起打包在一個使用Ant jar和unjar任務的jar中:http://ant.apache.org/manual/Tasks/unzip.html 但我不會推薦這樣做。

1

是的,這是可能的,生成的jar實際上被稱爲「uberjar」或「megajar」。基本上,要創建一個「uberjar」,您需要提取外部庫的內容(使用jar -x)並在您自己的jar中重新包裝(使用jar -c)。這可以通過手動或者使用像Ant這樣的構建工具來實現(並且可選擇支持像One-JAR這樣的項目),或者通過maven-assembly-plugin(或maven-shade-plugin)爲此提供內置支持的Maven )

0

有一種簡單的方法可以通過內置的ant腳本來實現。

又是SO質疑指向這篇文章:http://mavistechchannel.wordpress.com/2010/08/17/how-to-build-a-single-jar-file-with-external-libs/

我加了,但就是這樣一個菜鳥,我不知道如何使用它。 This article有一個很棒的視覺教程。基本上,在修改你的ant腳本後,進入文件標籤(在左邊的資源管理器中)=>右鍵單擊xml =>運行任務=>其他任務=>存儲包(或任何你命名的腳本)