记一个maven编译打包低级错误"Fatal error compiling: 无效的目标发行版: 11"的解决

昨天遇到一个java8迁移到java11的项目编译问题,错误如下:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project xxxxx: Fatal error compiling: 无效的目标发行版: 11 -> [Help 1]

初以为是spring或maven版本低,升级以后仍然报错:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project xxxxx: Fatal error compiling: 无效的目标发行版: 11 -> [Help 1]

只好求助网络搜索,大多建议pom.xml增加:


<properties>
  <java.version>11</java.version>
  <maven.compiler.source>11</maven.compiler.source> 
  <maven.compiler.target>11</maven.compiler.target>
</properties>

也有建议修改maven的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>

逐一尝试后并未解决前述错误,于是重新检查一遍当前java版本:

C:\Users\cocopi>java -version
java version "11.0.18" 2023-01-17 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.18+9-LTS-195)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.18+9-LTS-195, mixed mode)

检查maven版本:

C:\Users\cocopi>mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: D:\apache-maven-3.6.3\bin\..
Java version: 1.8.0_231, ... , runtime: C:\Program Files\Java\jdk1.8.0_231\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

至此发现错误原因,原来执行java -version默认使用系统环境变量JAVA_HOME,而maven优先使用了windows的用户变量JAVA_HOME(这里之前忘记修改,仍然指向java8路径),修改用户变量JAVA_HOME指向java11或删除该用户变量JAVA_HOME(如无它用)后即可。

这是个低级错误,网上未见提及,可能会帮到个别与我类似的朋友~

第一次在中国最伟大的开源博客上写笔记,如有不妥请多指教,祝一切顺利!

 

posted @ 2023-05-14 10:26  cocopi  阅读(10826)  评论(0)    收藏  举报