java maven没有正确添加mainclass
我想用maven编译我的Java项目,但它没有将主类添加到清单文件中。所以我不能在intellij之外运行罐子。我已经在我的pom中添加了主类。xml,但它不会显示在清单文件中
我正在Win10机器和maven3(intellij IDEA 2018.3.1/plugins/maven/lib/maven3)上使用intellij的构建功能
如果我运行jar,就会得到错误
$java -jar myJar.jar
kein Hauptmanifestattribut, in myJar.jar
(德语的意思是:没有主清单属性,在myJar.jar中,我不知道它的确切英文翻译,但它的意思是:没有指定主类)
我尝试了几个maven插件(maven compile、maven jar、maven shade)和指定主类的方法,但没有一个插件将其添加到清单文件中。我唯一能让它起作用的方法就是当我添加一行时
Main-Class: Main
用手
我的pom文件(是的,我的主要类名为main,是的,当我手动添加它时,它运行良好)
...
<groupId>com.myname</groupId>
<artifactId>myProject</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
...
清单文件
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: dspicuzz
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_65
如果我手动添加这条线,它运行良好
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: dspicuzz
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_65
Main-Class: Main
但我不能让maven用这种方式为我生成它
# 1 楼答案
IntelliJ的构建不会重新生成jar文件。尝试运行包目标来重新创建jar文件
验证包名是否与目录结构匹配:
com.mytest.Main
如果没有包,它也会工作,但确保目录结构也没有包结构
这将起作用:
波姆。xml
你好。爪哇
运行:
这是maven jar插件生成的清单文件:
还要检查你的源代码目录是否用intellij(浅蓝色)正确标记。这张图片是针对无包装版本的
以下是有关如何使用IntelliJ从头开始创建项目的分步说明:
<build>
和<properties>
部分复制并通过到pom。xml文件java -jar C:\code\java\runnable\target\runnable-1.0-SNAPSHOT.jar
检查jar文件日期是否与单击package时的时间匹配。 如果上述方法不起作用,您可能已经发现了一个bug。尝试不同的JDK版本