[英]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中,如下所示:
您可以選擇是將依賴項包裝為單個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.