Why has it failed to load main-class manifest attribute from a JAR file?
我用这种方式创建了一个jar文件
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 |
不需要有
我跑的时候也犯了同样的错误:jar cvfm test.jar test.class manifest.txt文件
解决的是:jar cvfm test.jar manifest.txt测试类
我的清单具有Oracle文档中给定的入口点(确保文件末尾有一个新行字符):主要类别:试验
我发现我在NetBeans中也有这个错误。我希望下面的内容有帮助。
这是我遇到的问题,因为我在NetBeans中使用了其他"测试"程序,我必须确保项目配置运行部分下的主类设置正确。
许多祝福,约翰普