[英]Create an excutable jar in IntelliJ IDEA
我正在使用IntelliJ IDEA 12.1.3。 我有一个模块,我正在尝试按照此处给出的步骤将其转换为jar。 我构建了jar文件,然后将jar文件移到了D:/。 如果我尝试运行此jar,则会收到以下消息:
无法从jar加载Main-Class清单属性
如果我使用java -classpath jar com.code.TestCase
运行它,它会完美运行。
为什么会这样? 我使用IntelliJ IDEA创建了jar。 在那个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
?
我遇到了同样的问题,并发现了Intellij如何自动填充清单路径的修复程序和/或错误。
智能用户界面
创建工件以创建jar文件时,IntelliJ会自动填充当前清单所在的路径。
例如,在工件创建页面中选择Main-Class之后,Intellij将自动添加以下路径\\ src \\ java \\ META-INF \\ MANIFEST.MF。 出于某种原因,build命令从不采用提到的MANIFEST.MF文件。 它从头开始创建一个没有Main-Class定义的内容,这导致“无法加载Main-Class”
如果使用IntelliJ UI创建jar工件; 通过将自动填充路径更改为/$PROJECT_DIR/src/
来删除该自动填充路径,然后单击“确定”。
默认情况下的示例:
现在这是更改后的样子:
手动修复以输入正确的MANIFEST.MF文件
在IntelliJ项目上,打开.idea \\ artifacts \\ _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版一起使用
希望能有所帮助。
重要规则之一是清单文件必须以换行符或回车符结尾。 如果不存在,请立即添加。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.