我正在嘗試從命令行創建可執行jar。 JAR中的主類具有依賴關係,我已將其打包到另一個純JAR文件中。從命令行用可執行JAR(ÜberJAR)捆綁JAR依賴關係
我想將依賴JAR與可執行JAR一起打包,以便發佈單個JAR文件。
我有什麼到目前爲止已經試過如下:
的依賴Hello.class文件具有模擬代碼:
public class Hello {
public String getHello() {
return "Well hello there!!";
}
}
我已經打包類文件到hello.jar使用:
jar cvfM hello.jar Hello.class
的hello.jar內容現在是:
hello.jar -+- Hello.class
現在我與模擬代碼的主類:
public class Main {
public static void main(String[] args) {
System.out.println(new Hello().getHello());
}
}
我然後創建一個清單文件manifest.txt具有以下內容:
Main-Class: Main
Class-Path: hello.jar
我現在創建可執行JAR使用:
jar cvfm main.jar manifest.txt Main.class hello.jar
該main.jar文件內容現在是:
main.jar -+- Main.class
|
+- hello.jar
|
+- META-INF -+- MANIFEST.MF
運行使用可執行的JAR:
java -jar main.jar
我得到了你好類相關性的類加載器的錯誤。我知道這是因爲類加載器尋找hello.jar與main.jar相同。所以當我把的副本hello.jar並列main.jar我能夠運行它。
我需要做什麼才能運行main.jar其中帶有hello.jar?
我知道你會問:「他爲什麼試圖這樣做?」。我知道,大多數人使用Eclipse,Ant,Maven或其他工具來執行此操作。但請只是幽默我:)