我已經創建了清單可執行的JAR的jar可執行:的Java:創建嵌入依賴罐子
Manifest-Version: 1.0
Main-Class: MyClass
Class-Path: lib/ext.jar
我可以成功運行此JAR如果我有文件夾LIB與依賴ext.jar在創建.jar的文件夾。
我想在我的可執行JAR中嵌入ext.jar以在任何我想要的位置啓動它,而無需創建lib文件夾。這將允許JAR文件是自包含的,包括它的所有依賴關係。
有沒有辦法做到這一點?
我已經創建了清單可執行的JAR的jar可執行:的Java:創建嵌入依賴罐子
Manifest-Version: 1.0
Main-Class: MyClass
Class-Path: lib/ext.jar
我可以成功運行此JAR如果我有文件夾LIB與依賴ext.jar在創建.jar的文件夾。
我想在我的可執行JAR中嵌入ext.jar以在任何我想要的位置啓動它,而無需創建lib文件夾。這將允許JAR文件是自包含的,包括它的所有依賴關係。
有沒有辦法做到這一點?
默認的Java類加載器無法在jar文件中找到嵌入的jar。您將需要設置您的Java程序以使用可以處理嵌入式jar文件的類加載器。就我所知,我在任何開源庫中都沒有看到過,因此您可能需要自己編寫一個。
或者,您可以提取所有jar文件並將其內容合併到一個jar文件中。
謝謝你的回答 – TheFrancisOne
「沒有辦法做到這一點」根本不正確。它只需要一個能夠理解嵌入式jar的Classloader--就像一個jar。 –
@ThorbjørnRavnAndersen感謝您的更正。我不知道爲什麼我這樣說,或者 – gigadot
我會建議用Maven構建。請參閱鏈接: http://stackoverflow.com/questions/1729054/include-dependencies-into-jar – hgus1294
是否應用程序。有一個GUI?如果是這樣,更好的部署選項可能是[Java Web Start](http://stackoverflow.com/tags/java-web-start/info)。 JWS使添加額外的Jars到應用程序的運行時類路徑變得很簡單。更好的是,JWS可以提供一個整潔的桌面快捷方式或菜單項(帶有自定義圖標)來啓動應用程序。 –
@AndrewThompson在沒有GUI時可以使用JWS嗎?我想你也可以創建一個.jnlp文件並將其與你的jar文件分開(然後不要「Web」)? – Matthieu