我正在尝试从命令行创建可执行 jar。 JAR 中的主类具有我已打包到另一个普通 JAR 文件中的依赖项。
我想将依赖项 JAR 与可执行 JAR 打包在一起,以便提供单个 JAR 文件。
到目前为止我已经尝试过以下内容:
依赖Hello.class文件有模拟代码:
public class Hello {
public String getHello() {
return "Well hello there!!";
}
}
我使用以下方法将类文件打包到 hello.jar 中:
jar cvfM hello.jar Hello.class
The 你好.jar现在内容是:
hello.jar -+- Hello.class
现在我有了带有模拟代码的主类:
public class Main {
public static void main(String[] args) {
System.out.println(new Hello().getHello());
}
}
然后我创建一个清单文件清单.txt包含以下内容:
Main-Class: Main
Class-Path: hello.jar
我现在使用以下命令创建可执行 JAR:
jar cvfm main.jar manifest.txt Main.class hello.jar
The main.jar现在内容是:
main.jar -+- Main.class
|
+- hello.jar
|
+- META-INF -+- MANIFEST.MF
使用以下命令运行可执行 JAR:
java -jar main.jar
我收到一个类加载器错误Hello类依赖。我明白这是因为类加载器寻找你好.jar在相同的路径中main.jar。所以当我放一份副本时你好.jar旁边main.jar我能够运行它。
我需要做什么才能运行main.jar里面有 hello.jar 吗?
我知道你会问:“他为什么要这样做?”。我知道人们大多使用 Eclipse、Ant、Maven 或其他工具来做到这一点。但请幽默一下我:)