Java jar - 没有主要清单属性
Posted
技术标签:
【中文标题】Java jar - 没有主要清单属性【英文标题】:Java jar - no main manifest attribute 【发布时间】:2015-10-01 03:09:37 【问题描述】:我知道 jar 文件应该有 manifest.mf Main-Class: 属性,以便有一个入口点并使 jar 文件可运行。现在,我有一个我在下面构建的 jar 文件。这些类都是墨西哥卷饼包的一部分。我的 MANIFEST.MF 文件如下所示:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.1
Created-By: 1.7.0_51-b13 (Oracle Corporation)
Class-Path:
X-COMMENT: Main-Class will be added automatically by build
Main-Class: burrito.Main
,当我尝试通过以下方式构建和执行时:
jar -cvf Burrito.jar Customer.class Main.class Server
.class Store.class MANIFEST.MF
*added manifest
adding: Customer.class(in = 2800) (out= 1424)(deflated 49%)
adding: Main.class(in = 1147) (out= 757)(deflated 34%)
adding: Server.class(in = 3954) (out= 2094)(deflated 47%)
adding: Store.class(in = 3950) (out= 2190)(deflated 44%)
adding: MANIFEST.MF(in = 203) (out= 158)(deflated 22%)*
我明白了:
Burrito.jar
*java -jar Burrito.jar
no main manifest attribute, in Burrito.jar*
我尝试了各种方法,还尝试了 -m 开关 (cvfm)。我尝试了以下方法:
java -cp Burrito.jar burrito.Main
还有
java -cp Burrito.jar Main
,它们都告诉我错误:找不到或加载主类
我一直在研究论坛,但我似乎无法“谷歌”在这里找到解决方案。当然 Netbeans jar 可以工作,但我需要自己构建。我查看了 Netbeans jar,发现我有两个文件夹,burrito 和 META-INF。当然,manifest 文件在 META-INF 文件夹中,而 burrito 文件夹包含类文件。我不确定完全模仿这一点,我很乐意让这个程序运行。
任何指针/提示?
【问题讨论】:
【参考方案1】:你想要这样的东西:
jar -cvfm Burrito.jar MANIFEST.MF burrito/Customer.class burrito/Main.class burrito/Server.class burrito/Store.class
options后面的第一个参数对应f
标志(要创建的文件),第二个参数对应m
标志(清单文件),其他参数都是要添加的文件到 JAR。您必须确保 JAR 中的文件夹结构与 Java 包匹配,因此如果 burrito.Main
是类,那么您需要在 JAR 中使用 burrito/Main.class
,对于其他类也是如此。
【讨论】:
确实,jar -cvfm Burrito.jar MANIFEST.MF burrito/*.class 会生成一个正确可执行的 jar。以上是关于Java jar - 没有主要清单属性的主要内容,如果未能解决你的问题,请参考以下文章