Java从1.8升级至11.0.11后Maven编译target level报错如何解决
错误根因
该报错的核心原因是执行Maven编译的运行环境不支持Java 11的目标版本,要么是Maven本身绑定的JDK版本还是1.8,要么是编译插件的参数被上层配置覆盖,导致编译器只能识别最高1.8的目标级别。
排查步骤
- 执行命令
mvn -v查看Maven运行时绑定的JDK版本,确认输出的Java版本是否为11.0.11。如果显示为1.8.x版本,说明Maven运行依赖的JDK没有正确切换。 - 检查当前项目的父POM、全局settings.xml里的profile配置,确认是否存在强制配置maven-compiler-plugin的
<source>、<target>参数为1.8的逻辑,这类上层配置优先级高于子模块的配置。 - 如果在IDE中执行编译,检查IDE的Maven运行配置,确认关联的JRE/JDK版本是否为11。
解决方法
- 切换Maven运行的JDK版本为11
命令行场景:修改
JAVA_HOME环境变量指向本地JDK11的安装路径,重新执行mvn -v确认版本正确后再执行编译命令。
IDE场景(以IDEA为例):打开「设置 -> 构建、执行、部署 -> 构建工具 -> Maven -> 运行程序」,将JRE选项选择为本地安装的JDK11,保存配置后重新编译。 - 升级并修正maven-compiler-plugin配置,避免参数被覆盖,升级到更高版本的插件兼容性更好:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>11</source> <target>11</target> <release>11</release> </configuration> </plugin>
- 如果存在父POM强制覆盖编译参数的情况,可以在当前模块的插件配置中增加
<override>true</override>参数,强制使用当前模块的配置覆盖上层配置。
内容的提问来源于stack exchange,提问作者Pluto_rider
相关产品推荐
相关产品推荐

