问题背景
遇到 java: 警告:源发行版 17 需要目标发行版 17 这类报错,通常意味着项目编译环境中的 JDK 版本配置出现了冲突。简单来说,就是编译器认为源代码是用 Java 17 写的,但生成的字节码却指向了其他版本,或者反之。
要彻底解决这个问题,我们需要从 JDK 环境、构建工具配置、环境变量以及 IDE 设置这四个维度进行系统性排查。
确认 JDK 环境是否一致
首先得确保本地安装的 JDK 确实是 17。有时候系统里装了好几个版本,默认调用的可能不是预期的那个。
在终端执行以下命令查看当前生效的版本:
java -version
javac -version
输出应显示类似 17.0.x 的信息。如果版本低于 17,建议去 Oracle 官网或 Adoptium 下载并安装 JDK 17。
同时,检查构建工具使用的 JDK 是否与项目要求一致:
mvn -v
gradle -v
Maven 和 Gradle 输出的 Java home 路径必须指向 JDK 17 的安装目录。
统一构建工具配置
很多时候问题出在 pom.xml 或 build.gradle 里的插件版本过旧,导致无法正确识别 Java 17 特性。
Maven 项目
如果是 Spring Boot 3.x 项目,父依赖通常已经支持 JDK 17,但编译器插件仍需更新:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.0</version>
</parent>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.release>17</maven.compiler.release>
</properties>
<>
org.apache.maven.plugins
maven-compiler-plugin
3.11.0

