使用Intellij 2016创建Jar – 没有主要清单属性

在运行由Intellij创建的jar时,我没有获得no main manifest attribute 。 我提取了jar并观察到有另一个清单文件,而不是我在创建工件时指定的文件。

当我在IDE中打开清单时,它会正确显示所有内容,但在创建jar后,我会得到一个全新的清单文件。

 Manifest-Version: 1.0 Main-Class: YoutubeList 

我尝试了其他答案的每一个解决方案,但仍然没有做到正确。 为什么在Intellij中创建一个简单的jar是一项任务,它应该可以帮助开发人员!

编辑

有时它不包含Jar中的.class文件,导致could not found or load class

我对maven build的同样问题感到困惑。 当您从项目结构设置(ctrl + alt + shift + S)创建工件时,您必须更改清单目录:

 \src\main\java 

将java更改为资源

 \src\main\resources 

我还使用了选项提取到目标JAR,它运行良好。

编辑

您可以在此处找到详细的详细步骤,其他解决方案: https : //stackoverflow.com/a/45303637/2640826

确保您的pom.xml具有引用的主类和完全限定类,类似于:

   org.apache.maven.plugins maven-jar-plugin 2.6    org.mypkg.MyMainClass     

(…当然插件的版本号可能不同)。

主要类别不完全合格,是导致人们建议将清单移动到另一个位置(为了满足本地参考)的原因。

我花了几天时间来解决它。 我的解决方案:我在这个答案中加载了一个项目。 然后我比较并更正了加载项目和我自己的项目的设置。 我比较/纠正:

  • 运行/调试配置
  • MANIFEST.MF
  • 在Progect Structure设置中:项目,模块(标记源,资源等),工件。

最后,我将META-INF放在资源目录中。

也许我做了多余的动作,但它对我有用:)

PS还需要在Progect Structure设置 – > Modules – > Path中选择“inheritance项目编译输出路径”

在此处输入图像描述

File / Project structure / Artifacts您可以指定jar的构建方式。 您可以选择使用现有文件作为清单,也可以创建一个新文件,在这种情况下,您可以指定主类和类路径…

我发现了一个不同的解决方案。 在用于构建.jar文件内容的IntelliJ项目结构对话框中,我不得不手动添加包含Manifest文件的META-INF文件夹。 以下是它在项目结构对话框中查看结尾的方式。 如果在jar内容列表中没有看到该文件夹​​,则清单文件不是jar文件的一部分。

这是“项目结构”对话框的一部分

我手动包含文件夹的方法是单击加号,选择目录内容选项,然后导航到META-INF文件夹。