使用清单将项目导出为 jar 文件
Export project as jar file using manifest
我刚刚编写了 Java 控制台项目,我应该将其打包为 jar 文件。我在谷歌上搜索了很多,发现了不同的解决方案,比如 (Eclipse) Project -> New Configuration -> e.t.c Then export as jar file using speciefied config.这很好,但这不是我需要的。反复制作后 - 它不会起作用。我试着按照这里提到的做同样的事情:click
第二种解决方案:使用清单创建 jar。嗯,好多了,因为我可以指定 main.class 的入口点。但它不会工作,因为无法找到另一个包在哪里。
更新:Launcher.class 看起来像这样
package backpack.dao;
public class Launcher{
public static void main(String[] args){
Backpack.start();
}
}
我的项目结构:
src/backpack/dao/Item.java
/Backpack.java
/Chromo.java
src/backpack/main/launcher/Launcher.java
问题是:我应该在清单中写什么而不是这个:
Main-Class src/backpack/main/launcher/Launcher
制作可执行jar
成功了吗?
P.S 启动器 class 使用来自 Backpack.java 的实例
请不要降级。我是菜鸟
谢谢
Launcher.java的包是什么? manifest.txt 中的 classname 中包含包名了吗?
请记住,当 Launcher.java 在包 "backpack.main.launcher" 中时,您在 manifest.txt 中的 class 名称将是:
Main-Class src/backpack.main.launcher.Launcher
而不是:
Main-Class src/backpack/main/launcher/Launcher
此外,请记住这一点:
The text file must end with a new line or carriage return.
要检查你的 jar 文件到底有什么问题 运行 它在命令行中使用:
java -jar MyJar.jar
并在此处粘贴带有错误消息的输出。
如需更多帮助,您可以查看来自 Oracle 的示例:link
编辑:
我重新创建了您的项目结构并且找到了解决方案(至少我认为我找到了:))
- 编译您的代码并使用编译后的代码转到父目录(带有 *.class 文件,这应该是 "out" 目录或类似的目录 - 取决于您的 IDE ).例如:当您的项目位于
some/path/src/backpack/main/launcher
时,转到 src
目录。
- 运行 命令:
jar cvfe MyJar.jar backpack.main.launcher.Launcher -C . .
(是的,末尾有两个点)
这应该创建名称为 MyJar.jar
的 jar 和主要 class backpack.main.launcher.Launcher
的清单文件(-e 标志)。 -C 标志包括所有 *.class 文件递归地来自目录 .
(当前目录),因此来自 dao
和 launcher
包。
- 测试罐:
java -jar MyJar.jar
我刚刚编写了 Java 控制台项目,我应该将其打包为 jar 文件。我在谷歌上搜索了很多,发现了不同的解决方案,比如 (Eclipse) Project -> New Configuration -> e.t.c Then export as jar file using speciefied config.这很好,但这不是我需要的。反复制作后 - 它不会起作用。我试着按照这里提到的做同样的事情:click
第二种解决方案:使用清单创建 jar。嗯,好多了,因为我可以指定 main.class 的入口点。但它不会工作,因为无法找到另一个包在哪里。
更新:Launcher.class 看起来像这样
package backpack.dao;
public class Launcher{
public static void main(String[] args){
Backpack.start();
}
}
我的项目结构:
src/backpack/dao/Item.java
/Backpack.java
/Chromo.java
src/backpack/main/launcher/Launcher.java
问题是:我应该在清单中写什么而不是这个:
Main-Class src/backpack/main/launcher/Launcher
制作可执行jar
成功了吗?
P.S 启动器 class 使用来自 Backpack.java 的实例 请不要降级。我是菜鸟
谢谢
Launcher.java的包是什么? manifest.txt 中的 classname 中包含包名了吗? 请记住,当 Launcher.java 在包 "backpack.main.launcher" 中时,您在 manifest.txt 中的 class 名称将是:
Main-Class src/backpack.main.launcher.Launcher
而不是:
Main-Class src/backpack/main/launcher/Launcher
此外,请记住这一点:
The text file must end with a new line or carriage return.
要检查你的 jar 文件到底有什么问题 运行 它在命令行中使用:
java -jar MyJar.jar
并在此处粘贴带有错误消息的输出。
如需更多帮助,您可以查看来自 Oracle 的示例:link
编辑:
我重新创建了您的项目结构并且找到了解决方案(至少我认为我找到了:))
- 编译您的代码并使用编译后的代码转到父目录(带有 *.class 文件,这应该是 "out" 目录或类似的目录 - 取决于您的 IDE ).例如:当您的项目位于
some/path/src/backpack/main/launcher
时,转到src
目录。 - 运行 命令:
jar cvfe MyJar.jar backpack.main.launcher.Launcher -C . .
(是的,末尾有两个点)
这应该创建名称为 MyJar.jar
的 jar 和主要 class backpack.main.launcher.Launcher
的清单文件(-e 标志)。 -C 标志包括所有 *.class 文件递归地来自目录 .
(当前目录),因此来自 dao
和 launcher
包。
- 测试罐:
java -jar MyJar.jar