繁体   English   中英

在IntelliJ IDEA中创建一个可执行的jar

[英]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/来删除该自动填充路径,然后单击“确定”。

默认情况下的示例:

默认的IntelliJ Jar工件设置

现在这是更改后的样子:

固定的IntelliJ工件设置

手动修复以输入正确的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM