基于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。

Idea Maven打包Fatal error compiling: invalid flag: –release插图

排查二

同样是要排查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进行编译处理,问题也就随之解决了。



Idea Maven打包Fatal error compiling: invalid flag: –release插图1

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://choupangxia.com/2020/11/18/idea-maven-fatal-error-compiling/