为什么它无法从JAR文件加载主类清单属性?

时间:2010-04-07 10:12:45

标签: java jar header manifest

我以这种方式创建了一个JAR文件jar cf jar-file input-files。现在,我正试图运行它。运行它不起作用(找不到jre命令):

jre -cp app.jar MainClass

这也不起作用:

java -jar main.jar

(无法从main.jar加载Main-Class清单属性)。

我也发现了

  

运行打包为的应用程序   JAR文件(版本1.2 - 要求   Main-Class清单标题)

什么是“Main-Class清单标题”?我如何创建它以及在哪里放置它?

11 个答案:

答案 0 :(得分:62)

我不确定我是否相信你的症状:

  • 如果找不到jre命令,则运行jre -cp app.jar应该会出现同样的错误
  • 只是将JAR文件添加到类路径中不应该给出您看到的错误

如果您运行,我希望您看到此错误:

java -jar app.jar

Main-Class标头需要位于JAR文件的清单中 - 这是关于其他所需库的元数据。有关如何创建适当的清单,请参阅Sun documentation。基本上你需要创建一个包含这样一行的文本文件:

Main-Class: MainClass

然后运行

jar cfm app.jar manifest.txt *.class

答案 1 :(得分:35)

  1. 设置类路径并编译

      

    javac -classpath“C:\ Program Files \ Java \ jdk1.6.0_ updateVersion \ tools.jar”yourApp.java

  2. 创建manifest.txt

      

    Main-Class:yourApp 换行符

  3. 创建yourApp.jar

      

    jar cvf0m yourApp.jar manifest.txt yourApp.class

  4. 运行yourApp.jar

      

    java -jar yourApp.jar

答案 2 :(得分:9)

您可以使用:

运行
java -cp .;app.jar package.MainClass

如果JAR文件中没有清单,它对我有用。

答案 3 :(得分:6)

我收到了这个错误,这是因为我的参数输入错误了:

CORRECT

java maui.main.Examples tagging -jar maui-1.0.jar 

WRONG

java -jar maui-1.0.jar maui.main.Examples tagging 

答案 4 :(得分:1)

确保使用相应的清单文件正确创建可运行的JAR文件的最简单方法是使用Eclipse为您构建它。在Eclipse项目中,您基本上只需从菜单中选择File / Export,然后按照提示操作。

这样,您可以确定您的JAR文件是正确的,并且如果仍有问题,将会知道在其他地方查找。该过程在 FAQ How do I create an executable JAR file for a stand-alone SWT program? 中完整描述。

答案 5 :(得分:0)

我发现我在NetBeans中也遇到了这个错误。 我希望以下内容有所帮助。

  1. 确保在转到“项目配置”时设置要运行的主类。
  2. 执行构建或清理构建
  3. 将jar文件放在您想要的位置并尝试:java -jar" YourProject.jar"再次在命令行。
  4. 这是我遇到的问题,因为我有其他的"测试"我在NetBeans中使用的程序,我必须确保Project配置的Run部分下的Main Class设置正确。

    很多祝福, 约翰P

答案 6 :(得分:0)

我跑的时候遇到同样的错误:
jar cvfm test.jar Test.class Manifest.txt

是什么解决了这个问题:
jar cvfm test.jar Manifest.txt Test.class

我的清单中有oracle docs中给出的入口点(确保文件末尾有一个换行符):
Main-Class:Test

答案 7 :(得分:0)

尝试

java -cp .:mail-1.4.1.jar JavaxMailHTML 

无需manifest个文件。

答案 8 :(得分:0)

我遇到了同样的问题。此unix命令无法找到主类。这是因为运行时和编译时JDK版本不同。更改java编译器版本后,通过eclipse创建jar。以下链接帮助了我。

http://crunchify.com/exception-in-thread-main-java-lang-unsupportedclassversionerror-comcrunchifymain-unsupported-major-minor-version-51-0/

尝试运行此步骤后创建的jar,然后执行它

答案 9 :(得分:0)

如果在清单中完全指定了类路径, 也许你需要java运行时环境的最新版本。 当我重新安装jre 8时,我的问题得到解决。

答案 10 :(得分:0)

如果您使用eclipse,请尝试以下操作: 1.右键单击项目 - >选择导出 2.在选择导出目标中选择Runnable Jar文件 3.输入jar的名称并选择“Package required ...”(第二个单选按钮) - >完成

希望这有助于......!