簡體   English   中英

如何在我自己的Project JAR中包含外部JAR

[英]How do I include external JARs in my own Project JAR

我有一個Java應用程序並創建了一個JAR文件並進行了部署。

該應用程序使用外部JAR,如Log4J JAR。 創建JAR文件時,如何將所有外部相關JAR包含到我的存檔中?

為了讓我的應用程序正常工作,我不得不將Log4J JAR復制到與我自己的JAR相同的目錄中,這有點違背了jar的目的。 部署一個JAR文件不是更優雅嗎?

如果您使用Eclipse,您可以將所有包含的文件解壓縮到一個可運行的jar中,如下所示:

  1. 右鍵單擊Package Explorer中的項目名稱,然后選擇Export。
  2. 在Export屏幕中,選擇Java - > Runnable JAR file和Next。
  3. 填寫Runnable JAR文件規范屏幕並單擊完成。

您可以選擇是將依賴項包裝為單個jar文件還是將其提取到生成的JAR中。

您可以使用One-JAR之類的東西將Java應用程序及其依賴項打包到一個可執行的Jar文件中(One-JAR使用自定義類加載器使JAR嵌套成為可能)。

你必須將庫jar擴展到編譯類所在的同一個地方,然后從中創建一個jar。 根據構建過程的設置方式,可能有多種方法可以實現此目的。 這不是火箭科學 - 一個jar只是一個zip存檔,在根級別有一個META-INF目錄。

保持JAR分離更好,因為很容易將特定JAR升級到新版本而不觸及任何其他配置。 至於您必須將每個文件復制到JAR的相同位置的問題,您始終可以使用Java CLASSPATH並將任何JAR包含到應用程序的類路徑中。

正如您所發現的那樣,JAR本身不能嵌套其他JAR。

傳統上,人們會分發ZIP存檔或其他安裝程序來解除應用程序JAR(您的)以及適當位置的任何支持JAR以進行類路徑訪問。 然后,通常通過調用主JAR的腳本調用應用程序,並創建列出支持JAR的類路徑。

正如其他海報所述,如果你想要的話,你可以選擇創建一個超級JAR。

你可以使用Maven + assembly插件( http://maven.apache.org/plugins/maven-assembly-plugin/

順便說一句,如果你不和maven合作,可能這不是最簡單的方法。

暫無
暫無

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

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