Flutter项目在Fedora系统VS Code中持续提示OpenJDK 21工具链不满足能力要求的问题求助
各位好,我最近在Fedora 41系统的VS Code里开发Flutter项目时,一直被一个顽固的Java工具链警告折腾,试了好几种方法都没解决,想来请教下大家的思路。
每次打开项目都会弹出这个错误:
The supplied phased action failed with an exception. Could not create task ':app:compileDebugAndroidTestJavaWithJavac'. Failed to calculate the value of task ':app:compileDebugAndroidTestJavaWithJavac' property 'javaCompiler'. Toolchain installation '/usr/lib/jvm/java-21-openjdk' does not provide the required capabilities: [JAVA_COMPILER]
奇怪的是,我明明已经把Java版本切换到OpenJDK 24了,但警告还是死死盯着OpenJDK 21不放,这到底是哪里还没改到位?
我已经尝试过的操作
- 修改了系统的
JAVA_HOME环境变量,指向OpenJDK 24的安装目录 - 执行Flutter命令指定JDK路径:
flutter config --jdk-dir="/usr/lib/jvm/java-24-openjdk/" - 在项目的
android/gradle.properties文件里添加了org.gradle.java.home=/usr/lib/jvm/java-24-openjdk
相关配置输出
以下是flutter doctor --verbose的结果:
[✓] Flutter (Channel stable, 3.32.6, on Fedora Linux 41 (KDE Plasma) 6.15.5-100.fc41.x86_64, locale en_GB.UTF-8) [120ms] • Flutter version 3.32.6 on channel stable at /home/bitmapp3r/dev/flutter-sdk • Upstream repository https://github.com/flutter/flutter.git • Framework revision 077b4a4ce1 (6 days ago), 2025-07-08 13:31:08 -0700 • Engine revision 72f2b18bb0 • Dart version 3.8.1 • DevTools version 2.45.1 [✓] Android toolchain - develop for Android devices (Android SDK version 36.0.0) [1,977ms] • Android SDK at /home/bitmapp3r/Android/Sdk • Platform android-36, build-tools 36.0.0 • Java binary at: /usr/lib/jvm/java-17-openjdk/bin/java This JDK is specified in your Flutter configuration. To change the current JDK, run: `flutter config --jdk-dir="path/to/jdk"`. • Java version OpenJDK Runtime Environment (Red_Hat-17.0.15.0.6-1) (build 17.0.15+6) • All Android licenses accepted. [✓] Chrome - develop for the web [25ms] • Chrome at google-chrome [✓] Linux toolchain - develop for Linux desktop [556ms] • clang version 19.1.7 (Fedora 19.1.7-4.fc41) • cmake version 3.30.8 • ninja version 1.12.1 • pkg-config version 2.3.0 • OpenGL core renderer: AMD Radeon Graphics (radeonsi, renoir, ACO, DRM 3.63, 6.15.5-100.fc41.x86_64) • OpenGL core version: 4.6 (Core Profile) Mesa 25.0.7 • OpenGL core shading language version: 4.60 • OpenGL ES renderer: AMD Radeon Graphics (radeonsi, renoir, ACO, DRM 3.63, 6.15.5-100.fc41.x86_64) • OpenGL ES version: OpenGL ES 3.2 Mesa 25.0.7 • OpenGL ES shading language version: OpenGL ES GLSL ES 3.20 • GL_EXT_framebuffer_blit: yes • GL_EXT_texture_format_BGRA8888: yes [✓] Android Studio (version 2025.1.1) [21ms] • Android Studio at /opt/android-studio • Flutter plugin can be installed from: • Dart plugin can be installed from: • Java version OpenJDK Runtime Environment (build 21.0.6+-13391695-b895.109) [✓] VS Code (version unknown) [19ms] • VS Code at /usr/share/code • Flutter extension version 3.114.0 ✗ Unable to determine VS Code version. [✓] Connected device (3 available) [261ms] • SM S911B (mobile) • RFCX808ZYCE • android-arm64 • Android 15 (API 35) • Linux (desktop) • linux • linux-x64 • Fedora Linux 41 (KDE Plasma) 6.15.5-100.fc41.x86_64 • Chrome (web) • chrome • web-javascript • Google Chrome 138.0.7204.100 [✓] Network resources [656ms] • All expected network resources are available. • No issues found!
项目中android/app/build.gradle.kts的配置(已省略项目名称):
plugins { id("com.android.application") id("kotlin-android") // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. id("dev.flutter.flutter-gradle-plugin") } android { namespace = "com.example.x" compileSdk = flutter.compileSdkVersion ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = JavaVersion.VERSION_11.toString() } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId = "com.example.x" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName } 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.getByName("debug") } } } flutter { source = "../.." }
我现在有点摸不着头脑了,明明已经切换了JDK,但系统还是揪着OpenJDK 21不放,而且flutter doctor显示的Java版本是17,Android Studio里又是21,这几个版本之间会不会有冲突?有没有大佬知道哪里可能还有隐藏的配置没改到?
内容来源于stack exchange

