升级Java 17后Flutter项目Gradle构建失败:Unsupported class file major version 65
Flutter项目升级Java17后assembleDebug构建失败(Unsupported class file major version 65)
问题背景
升级Java 17并更新Android Studio至Ladybug版本后,执行assembleDebug构建时失败,核心报错:
FAILURE: Build failed with an exception.
- 出错原因:无法为设置文件'.../android/settings.gradle'打开cp_settings通用类缓存。
提示:BUG! exception in phase 'semantic analysis' in source unit 'BuildScript' Unsupported class file major version 65
已尝试以下操作但未解决:
- 将gradle-wrapper.properties中的Gradle版本更新至7.3.3(支持Java17)
- 确认Java17已安装且JAVA_HOME路径正确,Flutter doctor验证通过
- 执行
flutter clean并重新构建
当前build.gradle配置:
compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' }
解决方案
1. 修正Android Studio的JDK配置
Android Studio Ladybug默认内置Java21,这是版本不匹配的核心原因:
- 打开Android Studio,依次进入
File > Project Structure > SDK Location - 取消勾选
Use embedded JDK (recommended),手动选择Java17的安装路径 - 切换到
Modules标签页,确认每个模块的JDK版本均设置为17
2. 强制Gradle使用指定JDK
在项目根目录的gradle.properties文件中添加以下配置,锁定Gradle使用的JDK版本:
org.gradle.java.home=/path/to/your/java17
替换为实际的Java17路径,例如:
- Windows:
C:\Program Files\Java\jdk-17.0.9 - Mac:
/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home - Linux:
/usr/lib/jvm/java-17-openjdk-amd64
3. 验证Gradle与AGP版本匹配
Gradle 7.3.3需要搭配适配的Android Gradle Plugin(AGP)版本,在项目根级build.gradle中确认:
buildscript { ext.kotlin_version = '1.7.20' // Kotlin版本需支持Java17 repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.3.1' // 与Gradle7.3.3适配的AGP版本 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
4. 彻底清理缓存
除了flutter clean,还需手动删除Gradle全局缓存:
- Windows:删除
%USERPROFILE%\.gradle\caches目录 - Mac/Linux:删除
~/.gradle/caches目录
清理完成后执行flutter pub get,再重新运行./gradlew assembleDebug
问题说明
报错中的major version 65对应Java21的类文件版本,说明构建脚本编译时使用了Java21而非你配置的Java17。Android Studio Ladybug升级后默认切换到内置Java21,导致Gradle构建环境与项目配置的Java17不兼容,通过锁定JDK版本即可解决。
内容的提问来源于stack exchange,提问作者Convert.ToInt32
相关产品推荐
相关产品推荐

