You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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文件中添加:
    org.gradle.java.home=C:\\Program Files\\Java\\jdk-20.0.1
    
    注意Windows系统路径需使用双反斜杠

额外注意事项

  • 恢复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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 15:40:10