Flutter编译报错:Unsupported class file major version 61 解决方案求助
Flutter构建报错:'BuildScript' Unsupported class file major version 61
环境信息
- Flutter SDK 版本:2.5.2
- Java 版本:17
构建错误日志
在SM G975U1上以debug模式启动lib\main.dart...
正在执行Gradle任务'assembleDebug'...FAILURE: 构建失败,出现异常。
- 错误原因:
无法打开设置文件'E:\z\grocery-store\android\settings.gradle'的通用类缓存(路径:C:\Users\MI.gradle\caches\7.0.1\scripts\c22q10f3o8aakfcab7d9nxrw4)。BUG! 在源单元'BuildScript'的'semantic analysis'阶段出现异常:Unsupported class file major version 61
尝试方案:
使用--stacktrace选项获取堆栈跟踪;使用--info或--debug选项获取更多日志输出;使用--scan选项获取完整分析信息。获取更多帮助:Gradle官方帮助文档
构建耗时855ms失败
异常:Gradle任务assembleDebug以退出码1失败
现有Gradle配置
app/build.gradle
def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { localPropertiesFile.withReader('UTF-8') { reader -> localProperties.load(reader) } } def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") } def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' } def flutterVersionName = localProperties.getProperty('flutter.versionName') if (flutterVersionName == null) { flutterVersionName = '1.0' } apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdkVersion 30 sourceSets { main.java.srcDirs += 'src/main/kotlin' } lintOptions { disable 'InvalidPackage' } defaultConfig { // TODO: Specify your own unique Application ID applicationId "com.example.grocery" minSdkVersion 24 targetSdkVersion 30 versionCode flutterVersionCode.toInteger() versionName flutterVersionName multiDexEnabled true } buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. signingConfig signingConfigs.debug } } } flutter { source '../..' } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'com.google.firebase:firebase-messaging:21.0.1' } apply plugin: 'com.google.gms.google-services'
android/build.gradle
buildscript { ext.kotlin_version = '1.5.10' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:4.2.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.3' } } allprojects { repositories { google() jcenter() } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { project.evaluationDependsOn(':app') } tasks.register("clean", Delete) { delete rootProject.buildDir }
解决方案
核心原因
Unsupported class file major version 61对应Java 17,当前项目使用的Gradle 7.0.1和Android Gradle Plugin 4.2.0对Java 17兼容性不足,导致构建失败。
方案1:降级Java版本到Java 11
Flutter 2.5.2官方推荐使用Java 8或Java 11,这是最快捷的解决方式:
- 安装Java 11,配置系统环境变量
JAVA_HOME指向Java 11的安装路径 - 执行
java -version确认当前Java版本为11 - 运行
flutter clean清理缓存后,重新执行flutter run
方案2:升级Gradle及相关插件(适配Java 17)
若坚持使用Java 17,需升级到支持Java 17的Gradle版本:
- 修改android/build.gradle:
buildscript { ext.kotlin_version = '1.7.10' repositories { google() mavenCentral() // 替换已停止维护的jcenter } dependencies { classpath 'com.android.tools.build:gradle:7.2.0' // 适配Java17的最低版本 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.10' // 同步升级Google服务插件 } } allprojects { repositories { google() mavenCentral() } } - 修改gradle/wrapper/gradle-wrapper.properties:
将distributionUrl替换为对应版本的Gradle:distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip - 清理缓存:执行
flutter clean,删除项目根目录及用户目录下的.gradle文件夹 - 重新运行
flutter run
方案3:指定项目编译用Java版本
在项目配置中强制使用Java 11编译,无需修改系统Java版本:
- 在android/build.gradle末尾添加:
subprojects { tasks.withType(JavaCompile) { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } } - 打开Android Studio,进入
File > Project Structure > SDK Location,将JDK location设置为Java 11的路径 - 执行
flutter clean后重新构建
内容的提问来源于stack exchange,提问作者TheBrownfish Rownak
相关产品推荐
相关产品推荐

