Java jar - 没有主要清单属性

Java jar - no main manifest attribute

我知道 jar 文件应该有一个 manifest.mf Main-Class: 属性,以便有一个入口点并制作 jar文件 运行 可用。现在,我有一个我在下面构建的 jar 文件。 classes 都是 burrito 包的一部分。我的 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

,两者都告诉我 错误:无法找到或加载主 class

我一直在研究论坛,但似乎无法'Google'找到解决方案。 Netbeans jar 当然可以,但我需要自己构建。我查看了 Netbeans jar,发现我有两个文件夹,burrito 和 META-INF。当然,清单文件在 META-INF 文件夹中,而 burrito 文件夹包含 class 个文件。我不确定要完全模仿这个,我很乐意简单地将这个程序添加到 运行。

任何 pointers/hints?

你想要这样的东西:

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

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