我有一個Java應用程序並創建了一個JAR文件並進行了部署。如何在我自己的項目JAR中包含外部JAR
該應用程序使用外部JAR,如Log4J JAR。在創建我的JAR文件時,如何將所有外部相關JAR包含到我的存檔中?
爲了讓我的應用程序正常工作,我不得不將Log4J JAR複製到與我自己的JAR相同的目錄中,這有損於JAR的目的。有一個單一的JAR文件可以部署嗎?
我有一個Java應用程序並創建了一個JAR文件並進行了部署。如何在我自己的項目JAR中包含外部JAR
該應用程序使用外部JAR,如Log4J JAR。在創建我的JAR文件時,如何將所有外部相關JAR包含到我的存檔中?
爲了讓我的應用程序正常工作,我不得不將Log4J JAR複製到與我自己的JAR相同的目錄中,這有損於JAR的目的。有一個單一的JAR文件可以部署嗎?
您可以使用類似One-JAR的東西將您的Java應用程序及其依賴關係打包到單個可執行Jar文件中(One-JAR使用自定義類加載器使JAR嵌套成爲可能)。
你必須將庫jars擴展到你的編譯類去的地方,然後從那裏做一個jar。根據你的構建過程的設置,可能有多種方法來實現這一點。這不是火箭科學 - jar只是一個帶有META-INF目錄的zip文件。
正如您發現的那樣,JAR本身並不能夠嵌套其他JAR。
傳統上,我們會分發一個ZIP歸檔文件或其他安裝程序,以便將應用程序JAR(您的)以及適用於類路徑訪問的適當位置的任何支持JAR解壓縮。然後,通常通過調用主JAR的腳本調用應用程序,並創建列出支持JAR的類路徑。
正如其他海報已經指出,你有一些選項來創建超級JAR,如果這是你想要的。
您可以使用Maven +組件,插件(http://maven.apache.org/plugins/maven-assembly-plugin/)
順便說一句,也許這不是最簡單的方法,如果你不使用Maven工作。
保持JAR獨立性更好,因爲只需將特定的JAR升級到新版本即可輕鬆進行升級,而無需任何其他配置。由於您需要將每個文件複製到與JAR相同的位置,因此您始終可以使用Java CLASSPATH
並將任何JAR包括到應用程序的類路徑中。
如果你使用Eclipse,您可以提取全部包括文件合併成一個可運行的jar像這樣:
您可以選擇是否將依賴項jar打包爲獨立的jar文件或將它們提取到生成的JAR中。
非常感謝所有花時間回覆的人。我會看看我有的選擇,並從那裏採取。 Regards John – Wilko 2010-09-20 09:16:45