【发布时间】:2011-10-12 15:47:08
【问题描述】:
我正在尝试从命令行创建一个可执行的 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
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 类依赖项的类加载器错误。我知道这是因为类加载器在与 main.jar 相同的路径中查找 hello.jar。因此,当我将 hello.jar 的副本放在 main.jar 旁边时,我就可以运行它了。
我需要做什么才能运行带有 hello.jar 的 main.jar?
我知道你会问:“他为什么要这样做?”。我知道 ppl 主要使用 Eclipse、Ant、Maven 或其他工具来执行此操作。但请幽默我:)
【问题讨论】:
标签: java jar classpath executable-jar