使用清单将项目导出为 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

编辑:

我重新创建了您的项目结构并且找到了解决方案(至少我认为我找到了:))

  1. 编译您的代码并使用编译后的代码转到父目录(带有 *.class 文件,这应该是 "out" 目录或类似的目录 - 取决于您的 IDE ).例如:当您的项目位于 some/path/src/backpack/main/launcher 时,转到 src 目录。
  2. 运行 命令: jar cvfe MyJar.jar backpack.main.launcher.Launcher -C . . (是的,末尾有两个点)

这应该创建名称为 MyJar.jar 的 jar 和主要 class backpack.main.launcher.Launcher 的清单文件(-e 标志)。 -C 标志包括所有 *.class 文件递归地来自目录 .(当前目录),因此来自 daolauncher 包。

  1. 测试罐:java -jar MyJar.jar