jdk多版本切换,通过 maven 指定编译jdk版本不生效,解决思路
背景
在使用 Maven 构建 Java 项目时,有时需要通过 pom.xml
文件指定编译的 JDK 版本,但发现配置后并未生效。这种情况通常是由于以下几个原因导致的:
-
pom.xml
配置不完整或错误
在pom.xml
中,通常需要配置maven-compiler-plugin
插件来指定 JDK 版本。如果配置不完整或错误,可能会导致版本切换失败。以下是一个完整的配置示例:<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>11</source> <!-- 指定源代码的 JDK 版本 --><target>11</target> <!-- 指定编译后的字节码的 JDK 版本 --></configuration></plugin></plugins> </build>
如果
source
和target
配置不一致,或者版本号写错(例如写成1.11
而不是11
),都会导致配置失效。 -
Maven 默认使用的 JDK 版本
即使pom.xml
中配置了 JDK 版本,Maven 仍然会使用系统默认的 JDK 进行编译。可以通过以下命令检查 Maven 使用的 JDK 版本:mvn -version
如果输出显示的 JDK 版本与
pom.xml
中配置的版本不一致,可以通过以下方式解决:- 在系统环境变量中设置
JAVA_HOME
,指向目标 JDK 的安装路径。 - 在 Maven 的配置文件
settings.xml
中指定 JDK 版本。
- 在系统环境变量中设置
-
IDE 的 JDK 配置 参考步骤①~④
如果使用 IntelliJ IDEA 或 Eclipse 等 IDE 进行开发,IDE 可能会覆盖pom.xml
中的 JDK 配置。需要确保 IDE 中的项目设置与pom.xml
一致:- 在 IntelliJ IDEA 中,打开
File -> Project Structure
,检查Project SDK
和Project language level
。
- 在 IntelliJ IDEA 中,打开
①:打开idea ->Settings -> Build,Execution, Deployment -> java Compiler 选择对应的jdk版本
②:Settings -> Project Strcture -> Project 选择对应的jdk
③:Settings -> Project Strcture -> Modules选择对应的jdk
④:maven -> modify run configuration -> java options选择对应的jdk
-
Maven 缓存问题
Maven 可能会缓存旧的配置或依赖,导致新配置未生效。可以尝试清理 Maven 缓存并重新构建项目:mvn clean install
-
多模块项目的配置问题
如果项目是多模块的,确保在父模块的pom.xml
中正确配置了maven-compiler-plugin
,或者在子模块中覆盖了父模块的配置。
通过以上步骤逐一排查,通常可以解决 JDK 版本切换不生效的问题。