2012-04-12 61 views
16

我试图使用mac终端创建一个.jar文件,但我有点麻烦。我按照步骤here但不成功。我得到了这个错误信息:如何使用终端创建.jar文件

Failed to load Main-Class manifest attribute from 
aclient.jar 

那么你究竟如何去做呢?我的Java程序被称为Main.java,我已经将它编译成一个.class文件。现在我该怎么办?

感谢

回答

40

1)确保所有必要的文件目录中,你已经打开了终端/命令提示符并导航到该目录。

2)编译的.java类,例如HelloWorld.java与

javac HelloWorld.java 

3)这将产生所需的JAR文件中的类文件。

4)接下来,创建一个清单文件(使用扩展名为.txt)使用文本编辑器和输入保存以下

Main-Class: HelloWorld 

或任何你的文件的名称是。

5)接下来,创建使用此代码的JAR文件:

jar cfm HelloWorld.jar Manifest.txt HelloWorld.class 

6)运行该文件:

java -jar HelloWorld.jar 

如果有什么事情,似乎都不清楚咨询以下网站: creating a jar filesetting an applications entry point

希望这可以帮助别人,欢呼汤姆!

编辑:

继英戈的评论值得注意的是,为了包括在jar多个文件,你需要使用:通过

jar cfm HelloWorld.jar Manifest.txt *.class 
+0

谢谢!按照您的指示,我遇到了一些麻烦,因为我的项目中有多个java文件。起初我以为我只需要编译我的主类,但如果你有多个Java文件,你必须编译它们,而不是“javac HelloWorld.java”,你必须做“javac * .java”和“jar cfm HelloWorld.jar Manifest.txt HelloWorld.class“将会是”jar cfm HelloWorld.jar Manifest.txt * .class“。您仍然只需在Manifest文件中声明主类。希望这有助于如果有人做了同样的错误。 – inga 2015-10-27 21:31:30

+1

@inga我已更新我的回答,以包含您的评论。感谢您的信息! – Katana24 2015-10-28 14:33:29

2

你需要有一个定义的主要 类的文本文件。 e.g

% cat MyMain 
Main-Class: HelloWorld 

然后

%jar cvfm foo.jar MyMain *.class 
%java -jar foo.jar 
Hello world 

参见:http://java.sun.com/j2se/1.4.2/runtime.html#example

+0

我也跟着你的链接,并创建了一个简单的例子。对于文本文件而言,内容只是主要类:HelloWorld或者应该有其他文本。还应该保存为.txt文件或.mf文件或其他东西? – Katana24 2012-04-12 16:35:07

+1

顺便说一句我仍然无法loa主类错误,即使在遵循您的建议后:/ – Katana24 2012-04-12 16:38:13

+0

Try%jar xvf foo.jar 已创建:META-INF/ 膨胀:META-INF/MANIFEST.MF 膨胀: HelloWorld.class,然后看看MANIFESTMF它应该看起来像Manifest-Version:1.0 Created:By:1.6.0_31(Apple Inc.) Main-Class:HelloWorld – 2012-04-12 17:41:50

3

也许这

javac *.java 

其次将帮助重新Manifest.txt文件:

警告:文本文件必须以ne结尾w行或回车。如果最后一行不以新行或回车结束,则不会正确解析。

4

是的,我们需要在类名末尾使用新行...它的工作对我来说

即主类:HelloWorld的

It will look like this in Notepad++ 
1.Main-Class: HelloWorld 
2.