java在IntelliJ IDEA中创建一个可执行的jar
我正在使用IntelliJ IDEA 12.1.3。我有一个模块,我正试图按照here给出的步骤将其转换成一个jar。我构建了jar文件,并将jar文件移动到D:/。如果我尝试运行这个jar,我会收到以下消息:
Failed to load Main-Class manifest attribute from jar
如果我使用java -classpath jar com.code.TestCase
运行它,它会运行得非常好
为什么会这样?我用IntelliJ创意制作了这个罐子。在这个jar中,它包含了我添加的所有外部库的所有代码
在src清单文件中:
Manifest-Version: 1.0
Main-Class: com.code.TestCase
但jar的清单文件内容是:
Manifest-Version: 1.0
Build-Jdk: 1.6.0
Built-By: ubuntu
Created-By: Apache Maven
Archiver-Version: Plexus Archiver
Name: org.apache.log4j
Implementation-Vendor: "Apache Software Foundation"
Implementation-Title: log4j
Implementation-Version: 1.2.15
为什么Main-Class
没有添加到jar文件清单中。MF,但它在src中有Main-Class
# 1 楼答案
我也遇到过同样的问题,并在Intellij自动填充清单路径的方式中发现了一个修复和/或错误
INTELLIJ UI
创建工件以创建jar文件时,IntelliJ会自动填充当前清单所在的路径
也就是说,在工件创建页面中选择主类后,Intellij将自动添加以下路径\src\java\META-INF\MANIFEST。MF。出于某种原因,build命令从未使用上述清单。MF文件。它从头开始创建一个没有主类定义的类,导致“无法加载主类”
如果使用IntelliJ UI创建jar工件;通过将自动填充路径更改为
/$PROJECT_DIR/src/
并单击“确定”,删除了该路径默认情况下的外观示例:
这就是改变后的样子:
手动修复以输入正确的清单。MF文件
在IntelliJ项目中,打开。创意\人工制品\罐子。xml
确保它包含
一旦你这么做了,你可能需要重新加载intelliJ,这样它就能接收到对。xml文件
对我来说,它发生在maven项目上,其中存在不同的结构(即src/main/java/)
我正在使用OSX 10.9.2和IntelliJ 12.1.6版
希望有帮助
# 2 楼答案
其中一条重要规则是,清单文件必须以新行或回车字符结尾。如果没有,现在就添加
# 3 楼答案
也许这个博客会对你有所帮助
http://javarevisited.blogspot.in/2013/01/how-to-fix-failed-to-load-main-class-manifest-attribute-jar-java-eclipse.html