我试图使用mac终端创建一个.jar文件,但我有点麻烦。我按照步骤here但不成功。我得到了这个错误信息:如何使用终端创建.jar文件
Failed to load Main-Class manifest attribute from
aclient.jar
那么你究竟如何去做呢?我的Java程序被称为Main.java,我已经将它编译成一个.class文件。现在我该怎么办?
感谢
我试图使用mac终端创建一个.jar文件,但我有点麻烦。我按照步骤here但不成功。我得到了这个错误信息:如何使用终端创建.jar文件
Failed to load Main-Class manifest attribute from
aclient.jar
那么你究竟如何去做呢?我的Java程序被称为Main.java,我已经将它编译成一个.class文件。现在我该怎么办?
感谢
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 file和setting an applications entry point。
希望这可以帮助别人,欢呼汤姆!
编辑:
继英戈的评论值得注意的是,为了包括在jar多个文件,你需要使用:通过
jar cfm HelloWorld.jar Manifest.txt *.class
你需要有一个定义的主要 类的文本文件。 e.g
% cat MyMain
Main-Class: HelloWorld
然后
%jar cvfm foo.jar MyMain *.class
%java -jar foo.jar
Hello world
我也跟着你的链接,并创建了一个简单的例子。对于文本文件而言,内容只是主要类:HelloWorld或者应该有其他文本。还应该保存为.txt文件或.mf文件或其他东西? – Katana24 2012-04-12 16:35:07
顺便说一句我仍然无法loa主类错误,即使在遵循您的建议后:/ – Katana24 2012-04-12 16:38:13
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
也许这
javac *.java
其次将帮助重新Manifest.txt文件:
警告:文本文件必须以ne结尾w行或回车。如果最后一行不以新行或回车结束,则不会正确解析。
是的,我们需要在类名末尾使用新行...它的工作对我来说
即主类:HelloWorld的
It will look like this in Notepad++
1.Main-Class: HelloWorld
2.
谢谢!按照您的指示,我遇到了一些麻烦,因为我的项目中有多个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
@inga我已更新我的回答,以包含您的评论。感谢您的信息! – Katana24 2015-10-28 14:33:29