2014-10-31 70 views
0

我有一個我已經構建了Netty庫的ontop的包裝器。創建庫時的問題

我想包裝導出爲一個.jar所以當我把它添加到另一個項目,我可以使用它的功能。

.JAR文件在依賴項文件夾中有Netty.jar文件,但是當我嘗試在我的項目中導入具有作爲庫的.jar文件的內容時,我無法導入任何netty函數。

當然,.JAR文件可以訪問Netty.Jar的罰款。

有沒有什麼辦法可以做到這一點,所以我不需要將我的.jar和netty.jar作爲庫,而只是讓我的.jar文件共享netty.jar到項目中?


例子:

-|_My Project 
---|_MyLibrary.Jar 
-----| Netty.Jar 

這將意味着你只需要輸入 'MyLibrary.Jar' 使用附帶 'Netty.Jar'

或者特徵我必須這樣做嗎


-|_My Project 
---| MyLibrary.Jar 
---| Netty.Jar 

回答

0

標準Java無法在Jar文件中加載Jar文件。所以你必須按照你提出的第二種方式來做到這一點,讓兩個圖書館彼此相鄰。 您可以做的是在MyLibrary.jar中包含一個包含指向Netty.jar的類路徑的清單。這樣,您只需將MyLibrary.jar添加到類路徑中,但不能同時添加兩者。但是,兩個jar文件都需要在文件系統上,而不是在類路徑中。

+0

所以用戶(如果有人想用這個)仍然必須下載Netty.jar,即使它已經「MyLibrary.Jar」裏面? – Hobbyist 2014-10-31 09:01:33

+0

是的,至少與標準的Java。還有其他的類裝載機,例如OneJar,這可能會有幫助,但我不會將它們用於庫,只適用於獨立應用程序。也看看這個問題:http://stackoverflow.com/questions/12357136/reference-jars-inside-a-jar – cello 2014-10-31 09:04:13

+0

什麼是拖動,我猜另一種選擇是使用我的Netty庫的來源項目,而不是僅將.Jar作爲庫引用,然後將其全部構建到.Jar中,這是否會給我所期待的結果? – Hobbyist 2014-10-31 09:07:12