Flutter项目运行报错:如何切换至已安装的Java 20版本?
Flutter Android项目构建失败:Java版本兼容问题解决
问题概述
创建并运行新Flutter项目时遭遇构建失败,核心错误为Android Gradle插件要求Java 11及以上版本,但当前环境仍在使用Java 1.8。
报错信息
FAILURE: Build failed with an exception. * 位置: 构建文件 'C:\Users\BCC\source\repos\Flutter\flutter_new_demo\android\app\build.gradle' 第24行 * 错误原因: 评估项目 ':app' 时出现问题。 > 无法应用插件 'com.android.internal.application'。 > Android Gradle插件运行需要Java 11版本,当前使用的是Java 1.8。 当前JDK路径为 C:\Program Files\Android\Android Studio\jre\jre 可尝试以下解决方案: - 修改IDE设置。 - 更改JAVA_HOME环境变量。 - 修改gradle.properties中的`org.gradle.java.home`配置。 * 建议操作: > 使用--stacktrace参数获取堆栈跟踪信息。 > 使用--info或--debug参数获取更多日志输出。 > 使用--scan参数获取完整分析报告。 * 获取更多帮助:https://help.gradle.org BUILD FAILED in 2m 50s ┌─ Flutter 修复建议 ─────────────────────────────────────────────────────────────────┐ │ [!] 使用当前版本Gradle构建应用需要Java 11或更高版本。 │ │ │ │ 如需获取Java 11,请访问https://developer.android.com/studio/install更新至最新版Android Studio。 │ │ │ │ 如需查看Flutter使用的Java版本,请执行`flutter doctor -v`命令。 │ └───────────────────────────────────────────────────────────────────────────────┘ Exception: Gradle task assembleDebug failed with exit code 1
相关配置文件
Android/build.gradle
buildscript { ext.kotlin_version = '1.7.10' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.2.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { google() mavenCentral() } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { project.evaluationDependsOn(':app') } task clean(type: Delete) { delete rootProject.buildDir }
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 flutter.compileSdkVersion ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } sourceSets { main.java.srcDirs += 'src/main/kotlin' } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.abanoub.eg.flutter_new_demo" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. minSdkVersion flutter.minSdkVersion targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName } 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" }
Flutter Doctor 输出
[√] Flutter (Channel stable, 3.7.12, on Microsoft Windows [Version 10.0.19044.2846], locale en-US) • Flutter version 3.7.12 on channel stable at C:\src\flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision 4d9e56e694 (10 days ago), 2023-04-17 21:47:46 -0400 • Engine revision 1a65d409c7 • Dart version 2.19.6 • DevTools version 2.20.1 [√] Windows Version (Installed version of Windows is version 10 or higher) [√] Android toolchain - develop for Android devices (Android SDK version 30.0.3) • Android SDK at C:\Users\BCC\AppData\Local\Android\Sdk • Platform android-31, build-tools 30.0.3 • ANDROID_SDK_ROOT = C:\Users\BCC\.android\avd\Pixel_4_XL_API_30.avd;C:\Users\BCC\.android\avd\Nexus_6_API_30.avd; • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01) • All Android licenses accepted. [√] Chrome - develop for the web • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe [!] Visual Studio - develop for Windows (Visual Studio Professional 2019 16.11.3) • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional • Visual Studio Professional 2019 version 16.11.31702.278 X The current Visual Studio installation is incomplete. Please reinstall Visual Studio. [√] Android Studio (version 4.1) • Android Studio at C:\Program Files\Android\Android Studio • Flutter plugin can be installed from: https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01) [√] Connected device (4 available) • Redmi Note 7 (mobile) • 6decdeee • android-arm64 • Android 9 (API 28) • Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.19044.2846] • Chrome (web) • chrome • web-javascript • Google Chrome 112.0.5615.138 • Edge (web) • edge • web-javascript • Microsoft Edge 112.0.1722.58 [√] HTTP Host Availability • All required HTTP hosts are available ! Doctor found issues in 1 category.
已尝试的无效方案
- 更新Java版本至20.0.1
- 将Android/build.gradle中的Gradle版本从7.2.0降级至4.1.0
解决方案
你的怀疑正确:Flutter仍在使用Android Studio自带的Java 1.8,而非你安装的Java 20。可通过以下方式切换:
1. 修改Android Studio IDE设置
- 打开Android Studio,进入
File > Project Structure > SDK Location - 在
JDK location处选择Java 20的安装路径(例如C:\Program Files\Java\jdk-20.0.1) - 点击Apply保存,重启IDE后重新构建项目
2. 配置JAVA_HOME环境变量
- 右键"此电脑" > 属性 > 高级系统设置 > 环境变量
- 在系统变量中新建
JAVA_HOME,值为Java 20的安装路径 - 编辑
Path变量,添加%JAVA_HOME%\bin,并将其移到Android Studio的Java路径之前 - 重启命令行和IDE,执行
flutter doctor -v确认Java版本已更新
3. 修改gradle.properties配置
- 在项目的
android/gradle.properties文件中添加:
注意Windows系统路径需使用双反斜杠org.gradle.java.home=C:\\Program Files\\Java\\jdk-20.0.1
额外注意事项
- 恢复Gradle版本:降级Gradle至4.1.0会与Flutter 3.7.12不兼容,建议改回7.2.0
- 编译选项无需修改:app/build.gradle中设置的
sourceCompatibility和targetCompatibility为1.8是允许的,这表示代码兼容Java 1.8,与Gradle运行环境要求的Java 11+不冲突
其他可能的问题
若上述配置后仍失败,检查:
- Android Studio版本:当前4.1版本较旧,建议更新至新版本,新版本自带Java 11+,可避免手动配置
- ANDROID_SDK_ROOT错误:当前该变量指向AVD文件夹,正确路径应为
C:\Users\BCC\AppData\Local\Android\Sdk,需修改环境变量
内容的提问来源于stack exchange,提问作者Abanoub Refaat
相关产品推荐
相关产品推荐

