Gradle构建报错:Unsupported class file major version 64求助
使用IntelliJ、JDK20和JavaFX开发项目,此前修改依赖等操作均正常。今日修改build.gradle的sourceSets配置后,构建时触发错误:
BUG! exception in phase 'semantic analysis' in source unit 'BuildScript' Unsupported class file major version 64
但将build.gradle恢复至上次成功构建的版本后,又能正常编译。当前使用Gradle 8.0.2,按版本说明该版本支持JDK20,对此问题感到困惑,寻求解决办法。
gradle.properties
# 示例配置,以实际内容为准 org.gradle.java.home=/path/to/your/jdk20 org.gradle.jvmargs=-Xmx2048m org.gradle.parallel=true
修改后报错的build.gradle(核心改动部分)
plugins { id 'java' id 'application' id 'org.openjfx.javafxplugin' version '0.0.13' } javafx { version = '20' modules = ['javafx.controls', 'javafx.fxml'] } // 此处为修改的sourceSets配置 sourceSets { main { java { srcDirs = ['src/main/java', 'src/custom/java'] // 添加了自定义源码目录 } resources { srcDirs = ['src/main/resources'] } } } // 其他依赖、编译配置...
BUG! exception in phase 'semantic analysis' in source unit '_BuildScript_' Unsupported class file major version 64 * Exception is: org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'your-project-name'. at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:93) ...(省略后续堆栈信息) Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 64 at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:196) at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:177) ...(省略后续堆栈信息)
检查Gradle运行时的JVM版本
打开终端执行gradle -v,查看输出中的Java version是否为JDK20。如果显示为低版本(如JDK11/17),说明Gradle默认使用的JVM不支持解析JDK20的类文件,需要切换到JDK20运行Gradle。修正IntelliJ的Gradle JVM配置
打开IntelliJ的Settings→Build, Execution, Deployment→Build Tools→Gradle,在Gradle JVM选项中选择项目使用的JDK20,避免使用系统默认的低版本JVM。确认gradle.properties的JDK路径配置
检查gradle.properties中的org.gradle.java.home是否正确指向JDK20的安装目录,路径不能有拼写错误;Windows下路径含空格的话建议用双引号包裹。排查sourceSets修改的潜在问题
对比修改前后的build.gradle,确认除了sourceSets外没有其他误改(如插件版本、Java编译版本)。同时检查sourceSets新增的源码目录中,是否存在用更高版本JDK编译的类文件(比如JDK21),导致Gradle解析失败。
内容的提问来源于stack exchange,提问作者Sc4rocko

