Idea Maven打包Fatal error compiling: invalid flag: –release
基于Idea的maven项目在导入项目之后,执行mvn package或其他操作时抛出类似如下异常:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project spring-rest: Fatal error compiling: invalid flag: --release -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException Process finished with exit code 1
根据异常描述信息可以得知:“Fatal error compiling: 无效的标记”。
异常原因
其实出现这种异常往往是由于maven所使用的jdk版本和idea所使用的jdk版本不一致导致的。这里的maven设计到idea自带的maven、本地安装的maven、idea自带的jdk、本地安装的jdk、以及项目中配置使用的jdk是哪个。
排查方案一
在maven的pom文件中配置如下:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
此处的source和target版本要与maven及项目的jdk版本一致。检查:idea—- setting – maven – running – jdk。

排查二
同样是要排查maven中pom配置的jdk版本号和setting.xml中配置的版本号是否一致。
pom.xml中配置:
<properties>
<java.version>11</java.version>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
setting.xml中配置:
<profile>
<id>jdk-11</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>11</jdk>
</activation>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.compilerVersion>11</maven.compiler.compilerVersion>
</properties>
</profile>
排查三
环境变量的检查
mvn -version
现实mvn相关版本和依赖的jdk。
pache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) Maven home: /usr/share/apache-maven Java version: 1.7.0_101, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.101-2.6.6.1.el7_2.x86_64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-327.3.1.el7.x86_64", arch: "amd64", family: "unix" [root@flybird ~]# mvn -version Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) Maven home: /usr/share/apache-maven Java version: 1.8.0_91, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-327.3.1.el7.x86_64", arch: "amd64", family: "unix"
Java的版本检查:
java -version
[root@xxx ~]# java -version openjdk version "1.8.0_91" OpenJDK Runtime Environment (build 1.8.0_91-b14) OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
对照以上两个版本是否一致。
排查四
同样是pom文件中jdk版本的配置问题:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<release>8</release>
<verbose>true</verbose>
</configuration>
</plugin>
</plugins>
</build>
pom.xml文件中,只需<release>8</release>从maven-compiler-plugin配置中删除标记。某些情况下是<release>9</release>。看起来是为Java 9向后兼容性添加的“发布”。
排查五
当发现jdk版本不一致时,可选择升级maven的jdk版本,或项目的jdk版本。特别是某些项目已经支持Java9,此时需要Java9及以上版本,那么就只能升级版本。
终极操作
经过以上的排查,也修改了对应的jdk版本,依旧无法解决问题。本人遇到的一个场景时,先将idea的jdk版本改为较高的版本,比jdk9或jdk11,然后把原来导入的项目删除掉。重新进行一次导入,idea便默认采用更高版本的jdk进行编译处理,问题也就随之解决了。

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接
本文链接:http://www.choupangxia.com/2020/11/18/idea-maven-fatal-error-compiling/