mal*_*din 32 java jar intellij-idea
我正在no main manifest attribute运行由Intellij创建的jar.我提取了jar并观察到有另一个清单文件,而不是我在创建工件时指定的文件.
当我在IDE中打开清单时,它会正确显示所有内容,但在创建jar后,我会得到一个全新的清单文件.
Manifest-Version: 1.0
Main-Class: YoutubeList
Run Code Online (Sandbox Code Playgroud)
我尝试了其他答案中的每个解决方案,但仍然没有做到正确.为什么创建一个简单的jar是Intellij中的一项任务,它应该可以帮助开发人员!
编辑
有时它不包括Jar中的.class文件 could not found or load class
Zso*_*aly 64
我对maven build遇到了同样的问题.当您从项目结构设置(ctrl + alt + shift + S)创建工件时,您必须更改清单目录:
<project folder>\src\main\java
Run Code Online (Sandbox Code Playgroud)
将java更改为资源
<project folder>\src\main\resources
Run Code Online (Sandbox Code Playgroud)
我还使用了选项提取到目标JAR,它运行良好.
编辑
您可以在此处找到详细的逐步解决方案,其他解决方案:https://stackoverflow.com/a/45303637/2640826
如果使用 Maven,请确保您的 pom.xml 具有引用和完全限定的主类,类似于:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<mainClass>org.mypkg.MyMainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
(...当然插件的版本号可能不同)。
主类不完全合格,导致人们建议将清单移动到另一个位置(以满足本地引用)。
将 META-INF 文件夹放入*/resources 可以,但不是这样:Intellij 只是将所有内容放在生成的 jar 的根级别下main/resources或test/resources根级别中,这就是它的工作原理;但在Java项目中,我们通常将它们放在项目根目录下,与src. 将它们放在“资源”下是违反约定的,而且它们不是资源文件。
确保你:
MANIFEST.MF使用项目根目录下的现有文件;Include in Project build“项目结构”->“工件”面板META-INF除了“项目编译输出”之外,选项卡中还列出了要包含在 jar 中的文件中的文件Output Layout夹然后,保存设置,再次构建,并进入“Build”菜单中的“Build Artifacts..”,并“构建”JAR。再次检查生成的jar,使用 运行java -jar。
| 归档时间: |
|
| 查看次数: |
36143 次 |
| 最近记录: |