无法在Windows上运行我的jar文件

时间:2009-10-06 18:53:16

标签: java windows jar executable manifest

我有这些文件board.classx4.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正在后台启动,但它没有显示原始程序给出的输出。

问题是什么?

2 个答案:

答案 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