Java 在IntelliJ IDEA中创建一个可执行的jar
我正在使用IntelliJ IDEA 12.1.3。我有一个模块,我正试图按照给定的步骤将其转换为一个jar。我构建了jar文件,并将jar文件移动到D:/。如果我尝试运行此jar,我会收到以下消息: 未能从jar加载主类清单属性 如果我使用Java 在IntelliJ IDEA中创建一个可执行的jar,java,jar,intellij-idea,executable-jar,Java,Jar,Intellij Idea,Executable Jar,我正在使用IntelliJ IDEA 12.1.3。我有一个模块,我正试图按照给定的步骤将其转换为一个jar。我构建了jar文件,并将jar文件移动到D:/。如果我尝试运行此jar,我会收到以下消息: 未能从jar加载主类清单属性 如果我使用java-classpath jar com.code.TestCase来运行它,那么它工作得非常好 为什么会发生这种情况?我使用IntelliJ IDEA创建了这个罐子。在这个jar中,它包含了我添加的所有外部库的所有代码 在src清单文件中: Manif
java-classpath jar com.code.TestCase
来运行它,那么它工作得非常好
为什么会发生这种情况?我使用IntelliJ IDEA创建了这个罐子。在这个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
为什么在jar文件MANIFEST.MF中没有添加
Main Class
,但在src中有Main Class
?重要规则之一是,MANIFEST文件必须以新行或回车字符结尾。如果没有,那么现在就添加。这个博客可能会对你有所帮助
我也遇到过同样的问题,并且在Intellij自动填充清单路径的方式中发现了一个修复和/或错误 智能UI 创建工件以创建jar文件时,IntelliJ会自动填充当前清单所在的路径 i、 e.在工件创建页面中选择主类后,Intellij将自动添加以下路径\src\java\META-INF\MANIFEST.MF。由于某些原因,build命令从不接受提到的MANIFEST.MF文件。它从头开始创建一个没有主类定义的类,导致“加载主类失败” 如果使用IntelliJ UI创建jar工件;通过将自动填充路径更改为
/$PROJECT\u DIR/src/
并单击确定,删除了该路径
默认情况下的外观示例:
现在,这是更改后的外观:
手动修复以输入正确的MANIFEST.MF文件
在IntelliJ项目上,打开.idea\artifacts\\u jar.xml
确保它包含
<element id="directory" name="META-INF">
<element id="file-copy" path="$PROJECT_DIR$/src/META-INF/MANIFEST.MF" />
</element>
完成此操作后,您可能需要重新加载intelliJ,以便它能够接收对.xml文件的更改
对我来说,它发生在maven项目上,其中存在不同的结构(即src/main/java/)
我正在使用OSX 10.9.2和IntelliJ 12.1.6版
希望有帮助。Intellij创意1?或者你的意思是11、12或13…你能分享你的
com.code.TestCase
类吗?它应该有主管道method@vikingsteve它是12.1。3@ArunKumar在那个Testcase类中,我有main方法only@muthu愚蠢的问题-你看过工件上的日期/时间了吗?你造的时候就在造,对吧?清单上没有奇怪的文件编码?但它是由intellij IDEA创建的IDEA 12.1.3创建的默认清单末尾有一个空行。感谢您发布此信息。我在到处寻找解决方案,试图理解为什么它不能解决这个问题!谢谢你兄弟)那绝对是节省时间的帖子