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进行编译处理,问题也就随之解决了。
关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接
本文链接:https://www.choupangxia.com/2020/11/18/idea-maven-fatal-error-compiling/