关于java:为什么它无法从JAR文件加载main-class manifest属性?

Why has it failed to load main-class manifest attribute from a JAR file?

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

1
jre -cp app.jar MainClass

这也不起作用:

1
java -jar main.jar

(未能从main.jar加载主类清单属性)。

我也发现了

To run an application packaged as a
JAR file (version 1.2 -- requires
Main-Class manifest header)

什么是"主类清单头"?我如何创建它?我将它放在哪里?


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

  • 如果找不到jre命令,那么运行jre -cp app.jar会产生相同的错误。
  • 只需将JAR文件添加到类路径中,就不会出现您看到的错误。

如果您运行以下命令,我希望您看到此错误:

1
java -jar app.jar

主类头需要在JAR文件的清单中-这是关于其他所需库的元数据。有关如何创建适当清单的信息,请参阅Sun文档。基本上,您需要创建一个文本文件,其中包含如下行:

1
Main-Class: MainClass

然后运行

1
jar cfm app.jar manifest.txt *.class


  • 设置类路径并编译


    javac -classpath"C:\Program Files\Java\jdk1.6.0_updateVersion\tools.jar" yourApp.java

  • 创建manifest.txt


    Main-Class: yourApp newline

  • 创建yourapp.jar


    jar cvf0m yourApp.jar manifest.txt yourApp.class

  • 运行你的瓶子


    java -jar yourApp.jar


  • 您可以使用以下选项运行:

    1
    java -cp .;app.jar package.MainClass

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


    我犯了这个错误,因为我的论点顺序不对:

    对的

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

    错误的

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


    最简单的方法是使用适当的清单文件,使用Eclipse为您构建可运行的JAR文件。在Eclipse项目中,您基本上只需从菜单中选择文件/导出,然后按照提示进行操作。

    这样,您就可以确保您的JAR文件是正确的,并且如果仍然存在问题,您将知道到其他地方查找。这个过程在FAQ中有完整的描述,我如何为一个独立的SWT程序创建一个可执行的JAR文件?.


    如果您使用Eclipse,请尝试以下操作:1。右键单击项目->选择导出2。在选择导出目标中选择可运行的JAR文件三。输入jar的名称并选择"需要打包…"(第二个单选按钮)->完成

    希望这有帮助…!


    如果类路径在清单中完全指定,也许您需要Java运行时环境的最后版本。我在重新安装JRE 8时解决了问题。


    我也面临同样的问题。这个unix命令找不到主类。这是因为运行时和编译时JDK版本不同。更改Java编译器版本后,使容器通过Eclipse。下面的链接帮助了我。

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

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


    尝试

    1
    java -cp .:mail-1.4.1.jar JavaxMailHTML

    不需要有manifest文件。


    我跑的时候也犯了同样的错误:jar cvfm test.jar test.class manifest.txt文件

    解决的是:jar cvfm test.jar manifest.txt测试类

    我的清单具有Oracle文档中给定的入口点(确保文件末尾有一个新行字符):主要类别:试验


    我发现我在NetBeans中也有这个错误。我希望下面的内容有帮助。

  • 确保在进入项目配置时,设置了要运行的主类。
  • 进行生成或清除生成
  • 将JAR文件放置在您希望和尝试的地方:Java-jar"YouTeal.jar"再次在命令行中。
  • 这是我遇到的问题,因为我在NetBeans中使用了其他"测试"程序,我必须确保项目配置运行部分下的主类设置正确。

    许多祝福,约翰普