终端执行Gradle构建时使用错误JDK版本问题排查
旧版本来源排查
1. Gradle Wrapper配置问题
你用的./gradlew是Gradle Wrapper,它自带一套独立的Gradle运行环境,如果项目里的Wrapper版本过低,会直接导致两个问题:
- 旧版Gradle默认绑定的Kotlin版本更低(比如Gradle 7.x对应Kotlin 1.5.x)
- 旧版Gradle对JDK17支持不足,会自动 fallback 到系统里的旧JDK
检查gradle/wrapper/gradle-wrapper.properties里的distributionUrl,Spring Boot 3.2要求Gradle 8.0+,如果你的url还是https://services.gradle.org/distributions/gradle-7.x-bin.zip这类旧版本,那这就是核心问题。另外,gradle.properties里如果配置了org.gradle.java.home指向JDK11的路径,也会强制Gradle使用旧JDK。
2. 终端的JDK环境变量
IDEA可以单独配置项目专属的JDK,但终端默认使用系统环境变量。执行echo $JAVA_HOME和java -version,如果输出是JDK11,说明终端全局用的就是旧JDK,Gradle会优先读取这个环境。
3. Gradle全局配置
用户目录下的~/.gradle/gradle.properties或者系统级的/etc/gradle/gradle.properties,可能提前设置了org.gradle.java.home或kotlin.version,直接覆盖了你项目里的配置。
解决步骤
升级Gradle Wrapper版本
打开项目后,要么在IDEA里执行Tasks > wrapper > wrapper任务,要么手动修改gradle/wrapper/gradle-wrapper.properties的distributionUrl为Gradle 8.x版本(比如https://services.gradle.org/distributions/gradle-8.5-bin.zip),然后执行./gradlew wrapper更新Wrapper。修正终端的JDK环境
- 临时生效:终端里执行
export JAVA_HOME=/path/to/jdk17和export PATH=$JAVA_HOME/bin:$PATH,再重新跑./gradlew build - 永久生效:修改终端配置文件(比如
~/.bashrc、~/.zshrc),把JAVA_HOME指向JDK17的路径,重启终端后生效。
- 临时生效:终端里执行
检查全局Gradle配置
打开~/.gradle/gradle.properties,删除或修改里面的org.gradle.java.home、kotlin.version这类全局配置,避免覆盖项目设置。验证配置生效
执行./gradlew --version,如果输出的JVM版本是17、Kotlin版本是1.9.22,说明配置正确,再执行./gradlew build即可。
内容的提问来源于stack exchange,提问作者Khantahr

