我刚刚编写了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中的实例 请不要降级。我是菜鸟
谢谢
答案 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
<强> 编辑: 强>
我重新创建了你的项目结构,我找到了解决方案(至少我认为我有:))
some/path/src/backpack/main/launcher
时,请转到src
目录。 jar cvfe MyJar.jar backpack.main.launcher.Launcher -C . .
(是的,最后两个点)这应该创建名为MyJar.jar
的jar和带有主类backpack.main.launcher.Launcher
的清单文件(-e标志)。 -C标志包括从目录.
递归的所有* .class文件(当前一个),因此来自dao
和launcher
包。
java -jar MyJar.jar