【发布时间】:2012-04-24 22:06:07
【问题描述】:
我正在尝试使用 mac 终端创建一个 .jar 文件,但遇到了一些麻烦。我按照here 的步骤操作,但没有成功。我收到此错误消息:
Failed to load Main-Class manifest attribute from
aclient.jar
那么你到底是怎么做的呢?我的 java 程序称为 Main.java,我已将其编译为 .class 文件。现在我该怎么办?
谢谢
【问题讨论】:
我正在尝试使用 mac 终端创建一个 .jar 文件,但遇到了一些麻烦。我按照here 的步骤操作,但没有成功。我收到此错误消息:
Failed to load Main-Class manifest attribute from
aclient.jar
那么你到底是怎么做的呢?我的 java 程序称为 Main.java,我已将其编译为 .class 文件。现在我该怎么办?
谢谢
【问题讨论】:
你需要有一个文本文件来定义主要的 班级。例如
% cat MyMain
Main-Class: HelloWorld
然后
%jar cvfm foo.jar MyMain *.class
%java -jar foo.jar
Hello world
【讨论】:
1) 确保所有必要的文件都在目录中,您已打开终端/命令提示符并导航到该目录。
2) 编译 .java 类,例如 HelloWorld.java 与
javac HelloWorld.java
3) 这将生成 JAR 文件所需的 .class 文件。
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。
希望这对其他人有所帮助,汤姆欢呼!
编辑:
根据 inga 的评论,值得注意的是,为了在 jar 中包含多个文件,您需要使用:
javac *.java
紧随其后
jar cfm HelloWorld.jar Manifest.txt *.class
【讨论】:
也许这将有助于重新 Manifest.txt 文件:
警告:文本文件必须以换行符或回车符结尾。如果最后一行没有以换行符或回车符结尾,则无法正确解析。
【讨论】:
是的,我们需要在类名末尾使用换行符...它对我有用
即主类:HelloWorld
It will look like this in Notepad++
1.Main-Class: HelloWorld
2.
【讨论】:
我按照说明进行操作,但在加载 Manifest.txt 文件时遇到了问题。
在 Manifest.txt 我们只需要写 主类:class_name
但是在上述声明之后,请在 Manifest.txt 中按回车键,您的 Manifest.txt 加载问题将得到解决。清单文件末尾的新行是必需的。
问候
【讨论】: