Java jar - 没有主要清单属性

时间:2015-07-12 23:07:00

标签: java jar manifest

我知道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工作,但我需要建立自己的jar。我偷看了Netbeans jar,我看到我有两个文件夹,burrito和META-INF。当然,清单文件位于META-INF文件夹中,而burrito文件夹包含类文件。我不确定是否完全模仿这个,我很乐意让这个程序运行起来。

任何指针/提示?

1 个答案:

答案 0 :(得分:4)

你想要这样的东西:

jar -cvfm Burrito.jar MANIFEST.MF burrito/Customer.class burrito/Main.class burrito/Server.class burrito/Store.class

选项后面的第一个参数对应于f标志(要创建的文件),第二个参数对应于m标志(清单文件),所有其他参数都是要添加到JAR的文件。您必须确保JAR中的文件夹结构与Java包匹配,因此如果burrito.Main是类,那么您需要在JAR中使用burrito/Main.class,对于其他类也需要类似。