使用清单将项目导出为jar文件

时间:2015-04-12 17:03:14

标签: java jar manifest

我刚刚编写了Java控制台项目,我将其作为jar文件打包。我google了很多,发现了不同的解决方案,如(Eclipse)Project - >新配置 - > e.t.c然后使用speciefied config导出为jar文件。那太好了,但这不是我需要的。反复制作后 - 它不会起作用。我试着像这里提到的那样做:click

第二个解决方案:使用清单创建jar。好吧,它更好,因为我可以指定main.class的入口点。但由于能够找到其他包裹的地方,它不会起作用。

Upd: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 Launcher类使用Backpack.java中的实例 请不要降级。我是菜鸟

谢谢

1 个答案:

答案 0 :(得分:0)

Launcher.java的包是什么?您是否已将包名称包含在manifest.txt中的类名中? 请记住,当Launcher.java位于“backpack.main.launcher”包中时,manifest.txt中的类名将为:

Main-Class src/backpack.main.launcher.Launcher

而不是:

Main-Class src/backpack/main/launcher/Launcher

另外,请记住:

  

文本文件必须以换行或回车结束。

要检查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 . . (是的,最后两个点)
  3. 这应该创建名为MyJar.jar的jar和带有主类backpack.main.launcher.Launcher的清单文件(-e标志)。 -C标志包括从目录.递归的所有* .class文件(当前一个),因此来自daolauncher包。

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