我有这些文件board.class
和x4.class
(x4.class有main()方法)。
为了jar这些文件,我写了
jar cf x4.jar *.class
并获得了x4.jar
个文件。
我将这个x4.jar文件复制到我的桌面(在Windows Vista上)并双击它。我收到了这个错误:
无法加载Main-Class清单 属性来自
C:\Users\eSKay\Desktop\x4.jar
如何将此文件作为jar可执行文件运行(不安装任何软件)?
更新 我使用清单文件来解决问题。我有一个我需要的jar文件,如果你这样做,它运行正常:
java -jar x4.jar
但是,当我双击x4.jar没有任何反应时,我检查了任务管理器,发现javaw.exe正在后台启动,但它没有显示原始程序给出的输出。
问题是什么?
答案 0 :(得分:5)
您需要创建一个manifest file,其中包含Main-Class
属性specify its entry point。然后使用jar命令中的“m”标志来指定它。例如,您可能有一个名为manifest.txt的文件:
Manifest-Version: 1.0
Main-Class: x4
请注意,您需要在文件末尾添加一个空行,否则jar
工具将无法正确处理它,忽略最后一行静默。
然后运行:
jar cfm x4.jar manifest.txt *.class
要测试它,请运行:
java -jar x4.jar
答案 1 :(得分:2)
我认为@Jon是正确的,只需确保使用CR / LF结束文件。
Setting an Application's Entry Point
警告:文本文件必须以a结尾 新线或回车。最后 如果它不会被正确解析 不会以新行结束或 回车。
或者您可以让jar程序自动为您创建Main-Class属性。
'e'标志(对于'入口点'), 在JDK 6中引入,创建或 覆盖清单的Main-Class 属性。它可以用于 创建或更新jar文件。使用 它指定应用程序条目 没有编辑或创建的点 清单文件。例如,这个 命令创建app.jar所在的位置 Main-Class属性值 manifest设置为MyApp:
jar cfe app.jar MyApp MyApp.class
您可以直接调用此方法 通过运行以下应用程序 命令:
java -jar app.jar
如果入口点类名称在 包它可能会使用'。' (点) 字符作为分隔符。对于 例如,如果Main.class在包中 叫foo的入口点可以 通过以下方式指定:
jar cfe Main.jar foo.Main foo/Main.class