在 jdk 多版本切换后 gradle 构建失败,通常是因为 gradle wrapper 的 `distributionurl` 配置指向了已卸载或路径变更的旧版 jdk,或者项目 `build.gradle` 中的 `sourcecompatibility` 与当前环境不匹配。处理方法是检查并更新 `gradle/wrapper/gradle-wrapper.properties` 文件中的 url,同时确保 `build.gradle` 中配置的 java 版本在当前环境中可用且兼容。

如何修复 Gradle Wrapper 指向错误的 JDK 路径
Gradle Wrapper 通过 `gradle-wrapper.properties` 文件管理其运行所需的 Gradle 发行版和对应的 JDK。如果切换 JDK 后构建失败,最常见的原因是该文件中指定的 `distributionUrl` 指向了一个不再存在的本地路径或错误的远程地址。解决方法是直接编辑该文件,将 URL 更新为有效的远程下载地址或正确的本地路径。

distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
上述配置表示 Gradle 将从官方服务下载指定版本的二进制包。如果之前配置的是本地路径如 `file:///C:/tools/gradle-8.5`,而该路径下的 JDK 或 Gradle 已被移除,构建就会失败。将其改为标准的远程 URL 可以让 Gradle 自动下载依赖,从而绕过本地环境缺失的问题。修改后,重新运行 `./gradlew build` 即可触发下载并重建缓存。
立即学习“Java免费学习笔记(深入)”;
如何解决 build.gradle 中 Java 版本不兼容问题
即使 Gradle Wrapper 正常,如果 `build.gradle` 文件中显式设置了 `sourceCompatibility` 或 `targetCompatibility` 为某个特定版本(如 `JavaVersion.VERSION_17`),而当前系统默认 JDK 或 Gradle 运行的 JDK 不支持该特性,也会导致编译错误。需要检查项目配置并确保其与当前开发环境一致。

java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
如果当前环境安装的是 JDK 11,而项目要求 JDK 17,构建时会抛出 `UnsupportedClassVersionError` 或类似错误。此时应确认是否真的需要升级 JDK,或者临时将兼容性版本调整为当前环境支持的版本。例如,若只需运行在 JDK 11 上,可将上述代码改为 `VERSION_11`。此外,确保 `JAVA_HOME` 环境变量指向正确的 JDK 安装目录,避免 Gradle 使用错误的运行时环境。
当 sourceCompatibility 设置为 VERSION_17 但当前 JDK 为 11 时构建会报什么错
当 `build.gradle` 中设置 `sourceCompatibility = JavaVersion.VERSION_17` 而当前运行的 JDK 为 11 时,Gradle 会在编译阶段报错,提示无法识别 Java 17 的语言特性或类文件格式。具体错误信息通常为 `Unsupported class file major version 61` 或 `java: invalid source release: 17`。这是因为 JDK 11 的编译器无法处理由更高版本 Java 编写的源代码或字节码。


















