Flutter项目升级Gradle 7.5.1遇Unsupported class file major version 64错误
报错核心原因
Unsupported class file major version 64 对应JDK 19的类文件版本。Gradle 7.5.1仅支持JDK 8-17,即便你降级了JDK,仍可能存在环境变量未更新、IDE配置未同步,或是VS Code的redhat.java插件仍调用旧JDK的情况,导致版本不匹配报错。
解决方案
1. 锁定Gradle与JDK的匹配版本
严格遵循官方对应关系:
- Gradle 7.4.x → JDK 8-11
- Gradle 7.5.x → JDK 8-17
建议将JDK切换到17,同时保留Gradle 7.5.1,或降级Gradle到7.4.2搭配JDK 11。
2. 统一全环境JDK配置
- 系统环境变量:修改
JAVA_HOME指向目标JDK路径,确保PATH优先级最高的是该JDK的bin目录,执行java -version验证生效。 - Android Studio:
- 打开
File > Project Structure > SDK Location,设置JDK location为目标JDK。 - 进入
Settings > Build, Execution, Deployment > Build Tools > Gradle,选择Gradle JDK为同一JDK。
- 打开
- VS Code:
- 打开设置(Ctrl+,),搜索
java.home,设置为目标JDK路径。 - 搜索
gradle.java.home,确保配置与java.home一致。
- 打开设置(Ctrl+,),搜索
3. 清理缓存并重建项目
- 删除项目根目录的
.gradle文件夹,以及Android模块下的.gradle和build文件夹。 - 执行命令:
flutter clean flutter pub get - 重启IDE后重新运行项目。
4. 修复第三方插件初始化脚本问题
报错涉及redhat.java插件的初始化脚本,可尝试:
- 更新redhat.java插件到最新版本,修复旧版本的JDK兼容bug。
- 暂时禁用该插件,验证是否为插件导致的JDK调用冲突。
原始报错信息
The supplied phased action failed with an exception.
Could not open init generic class cache for initialization script 'C:...\User\globalStorage\redhat.java\1.18.0\config_win\org.eclipse.osgi\53\0.cp\gradle\init\init.gradle'.
BUG! exception in phase 'semantic analysis' in source unit 'BuildScript' Unsupported class file major version 64
报错信息翻译
提供的阶段操作执行失败,抛出异常。
无法打开初始化脚本'C:...\User\globalStorage\redhat.java\1.18.0\config_win\org.eclipse.osgi\53\0.cp\gradle\init\init.gradle'的通用初始化类缓存。
错误!在源单元'BuildScript'的语义分析阶段发生异常:不支持的类文件主版本64
内容的提问来源于stack exchange,提问作者CornealWave

