我正在尝试从命令行创建可执行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或其他工具来执行此操作。但请只是幽默我:)