簡體   English   中英

創建包含第三方(jar)庫的Java庫

[英]Creating java library containing 3rd party (jar) libraries

我需要生成一個jar文件,該文件將被其他人用作庫(我們稱其為“ myLib.jar”),因此該jar不需要可執行。 該庫依賴於其他一些3rd-party jars,但是我不會期望使用“ myLib.jar”的人將其包含在他/她的Buildpath中。

搜索時,我找到了OneJar,並按照頁面頂部的2個步驟進行操作。

1. Download one-jar-appgen-0.97.jar
   Generate application, build, and run it.
   $ java -jar one-jar-appgen-0.97.jar

2. Enter project path (project name is last segment): c:/tmp/test-one-jar
   Enter java package name: com.example.onejar
   $ cd c:/tmp/test-one-jar 
   $ ant 
   $ cd build 
   $ java -jar test-one-jar.jar
   test_one_jar main entry point, args=[]
   test_one_jar main is running
   test_one_jar OK.
   Add source code to the src directory, library jars to the lib directory, and rebuild.

不幸的是,這對我沒有用,因為當我嘗試在新項目中包含“ myLib.jar”時,我無法使用預期的類。


所以...

Q1 :OneJar是否僅用於可執行jar? 如果沒有,我怎么能達到我上面所描述的。

問題2 :如果OneJar僅用於可執行文件,是否還有另一種方法來生成“ myLib.jar”庫?


PS:如果需要添加更多信息,請讓我知道,以便編輯我的手勢。

所有評論都建議避免將第三方庫打包到單個jar中。 幾個很好的原因

  1. 將所有第三方庫打包到一個jar中,可以使使用“ myLib.jar”的用戶擁有第三方庫的最新版本。
  2. 禁止任何其他庫使用打包在“ myLib.jar”中的相同的第三方庫,因為這會導致類路徑沖突。
  3. 您必須非常小心使用許可證。 每個第三方庫都可能受特定許可證的限制。 許多許可證不兼容,不能一起使用。

那么,我最終做了什么?

正如@rmlan向我保證的那樣,通知庫的用戶將另一個庫添加到他們的類路徑中並沒有什么錯。 牢記這一點,我創建了以下文件夾結構(實際上是許多其他文件夾所做的事情)並將其壓縮為一個壓縮文件:

myLib
-----bin
----------myLib.jar
-----documentation (mentions 'myLib' dependencies among other stuff)
-----lib (contains the 3rd party libraries)
----------thirdPartyLibrary.jar
----------anotherThirdPartyLibrary.jar
-----source (if it is an open source project)

最后,在我的情況下,我無法使用Maven或其他替代方法,但是如果可以的話,這將使整個過程變得更加容易。


編輯:為了創建“ myLib.jar”,我使用了eclipse

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM