Gradle与JDK兼容仍报Unsupported class major file version 61错误求助
问题:Unsupported class major file version 61 错误排查与解决
我已查看过相关问题但未能解决。使用IntelliJ IDEA,根据Oracle文档,Java 15.0.2与Gradle 6.7兼容,但仍收到Unsupported class major file version 61错误。此前使用JDK 17,现已卸载并将Java_Home设置为JDK 15。
本地环境信息
Gradle版本详情:
------------------------------------------------------------ Gradle 6.7 ------------------------------------------------------------ Build time: 2020-10-14 16:13:12 UTC Revision: 312ba9e0f4f8a02d01854d1ed743b79ed996dfd3 Kotlin: 1.3.72 Groovy: 2.5.12 Ant: Apache Ant(TM) version 1.10.8 compiled on May 10 2020 JVM: 15.0.2 (Oracle Corporation 15.0.2+7-27) OS: Windows 10 10.0 amd64
JDK详情:
java version "15.0.2" 2021-01-19 Java(TM) SE Runtime Environment (build 15.0.2+7-27) Java HotSpot(TM) 64-Bit Server VM (build 15.0.2+7-27, mixed mode, sharing)
已执行的排查操作
- Project Structure >> Project >> JDK版本设置为15;
- Settings >> Build Tools >> Gradle >> Gradle JVM设置为15;
- 修改
gradle/gradle-wrapper.properties中的版本从7.5.1改为6.7,配置为distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-bin.zip; - 修改source和target兼容性为15:
// Set the JVM compatibility versions withType<JavaCompile> { sourceCompatibility = "15" targetCompatibility = "15" }
尽管完成以上操作,仍收到该错误,求解决方法。
更新IntelliJ至2023.1.2后的配置
Gradle Wrapper配置:
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https://services.gradle.org/distributions/gradle-7.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
插件及依赖配置:
plugins { id("java") id("org.jetbrains.intellij") version "1.14.1" } group = "com.plugin" version = "1.0-SNAPSHOT" repositories { mavenCentral() } // Configure Gradle IntelliJ Plugin intellij { version.set("2023.1.2") type.set("IC") // Target IDE Platform plugins.set(listOf(/* Plugin Dependencies */)) } tasks { // Set the JVM compatibility versions withType<JavaCompile> { sourceCompatibility = "20" targetCompatibility = "20" } patchPluginXml { sinceBuild.set("221") untilBuild.set("231.*") } signPlugin { certificateChain.set(System.getenv("CERTIFICATE_CHAIN")) privateKey.set(System.getenv("PRIVATE_KEY")) password.set(System.getenv("PRIVATE_KEY_PASSWORD")) } publishPlugin { token.set(System.getenv("PUBLISH_TOKEN")) } }
解决方案
核心原因
Version 61对应JDK 17,说明项目中仍有JDK 17编译的class文件残留,或某个环节仍在调用JDK 17执行。
分步解决
清理旧编译产物
执行Gradle的clean任务,或手动删除项目根目录下的build文件夹以及.gradle缓存目录,彻底清除旧编译文件。校验系统全局JDK配置
- 打开命令行执行
java -version和javac -version,确认输出均为15.0.2; - 检查系统环境变量,确保
JAVA_HOME指向JDK 15目录,且PATH中无JDK 17的残留路径; - 重启IntelliJ IDEA,确保环境变量变更生效。
- 打开命令行执行
检查模块级JDK配置
进入Project Structure >> Modules,逐个确认每个模块的JDK版本均为15,避免模块单独使用其他JDK。终止Gradle守护进程
Gradle守护进程可能仍在使用旧JDK运行,执行命令停止所有守护进程后重新构建:gradle --stop适配更新后的2023.1.2配置
更新后的配置将Java兼容性设为20,需对应调整:- 若使用JDK 20:确保本地已安装JDK 20,将
JAVA_HOME或Gradle JVM切换为JDK 20; - 若继续使用JDK 15:将
sourceCompatibility和targetCompatibility改回15,Gradle 7.6兼容JDK 15,无需调整Gradle版本。
- 若使用JDK 20:确保本地已安装JDK 20,将
校验IntelliJ编译设置
进入Settings >> Build, Execution, Deployment >> Compiler >> Java Compiler,确保每个模块的“Target bytecode version”与使用的JDK版本一致。
内容的提问来源于stack exchange,提问作者user22030129
相关产品推荐
相关产品推荐

