使用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文件夹。