我知道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文件夹包含类文件。我不确定是否完全模仿这个,我很乐意让这个程序运行起来。
任何指针/提示?
答案 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
,对于其他类也需要类似。