Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在IntelliJ IDEA中创建一个可执行的jar_Java_Jar_Intellij Idea_Executable Jar - Fatal编程技术网

Java 在IntelliJ IDEA中创建一个可执行的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

我正在使用IntelliJ IDEA 12.1.3。我有一个模块,我正试图按照给定的步骤将其转换为一个jar。我构建了jar文件,并将jar文件移动到D:/。如果我尝试运行此jar,我会收到以下消息:

未能从jar加载主类清单属性

如果我使用
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创建的默认清单末尾有一个空行。感谢您发布此信息。我在到处寻找解决方案,试图理解为什么它不能解决这个问题!谢谢你兄弟)那绝对是节省时间的帖子