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

Flutter构建APK仍调用已卸载的OpenJDK 17,切换OracleJDK 1.8无效

问题描述

已卸载OpenJDK 17.0.6并降级至OracleJDK 1.8.0_381,JAVA_HOME路径设置为/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home,但执行flutter build apk -v时,Flutter仍尝试使用OpenJDK 17构建APK,导致Gradle报错无法识别版本'17.0.6'。

报错日志

[   +8 ms] FAILURE: Build failed with an exception. [   +2 ms] * What
went wrong: [        ] Could not determine java version from '17.0.6'.
[        ] * Try: [        ] Run with --debug option to get more log
output. [        ] * Exception is: [        ]
java.lang.IllegalArgumentException: Could not determine java version
from '17.0.6'. [        ]     at
org.gradle.api.JavaVersion.toVersion(JavaVersion.java:72) [        ]
at org.gradle.api.JavaVersion.current(JavaVersion.java:82) [        ]
at
org.gradle.internal.jvm.UnsupportedJavaRuntimeException.assertUsingVersion(UnsupportedJavaRuntimeException.java:42) [        ]    at
org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:32) [        ]   at
org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24) [        ]   at
org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) [        ]     at
org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) [        ]     at
org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:246) [        ]    at
org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:182) [        ]    at
org.gradle.launcher.Main.doAction(Main.java:33) [        ]    at
org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
     at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method) [        ]    at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown
Source) [        ]    at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source) [        ]    at
java.base/java.lang.reflect.Method.invoke(Unknown Source) [        ]
at
org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:60) [        ]     at
org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:37)
[        ]    at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
[        ]    at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method) [        ]    at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown
Source) [        ]    at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source) [        ]    at
java.base/java.lang.reflect.Method.invoke(Unknown Source) [        ]
at
org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
[        ]    at
org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
     at
org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
] * Get more help at https://help.gradle.org [  +34 ms] Running Gradle
task 'assembleRelease'... (completed in 529ms) [   +5 ms] "flutter
apk" took 20,334ms. [   +3 ms] Gradle task assembleRelease failed with
exit code 1 [        ]
#0      throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
#1      AndroidGradleBuilder.buildGradleApp
(package:flutter_tools/src/android/gradle.dart:456:9)

#2      AndroidGradleBuilder.buildApk
(package:flutter_tools/src/android/gradle.dart:208:5)

#3      BuildApkCommand.runCommand
(package:flutter_tools/src/commands/build_apk.dart:116:5)

#4      FlutterCommand.run.
(package:flutter_tools/src/runner/flutter_command.dart:1336:27)

#5      AppContext.run.
(package:flutter_tools/src/base/context.dart:150:19)

#6      CommandRunner.runCommand (package:args/command_runner.dart:212:13)

#7      FlutterCommandRunner.runCommand.
(package:flutter_tools/src/runner/flutter_command_runner.dart:296:9)

#8      AppContext.run.
(package:flutter_tools/src/base/context.dart:150:19)

#9      FlutterCommandRunner.runCommand
(package:flutter_tools/src/runner/flutter_command_runner.dart:244:5)

#10     run..
(package:flutter_tools/runner.dart:91:9)

#11     AppContext.run.
(package:flutter_tools/src/base/context.dart:150:19)

#12     main (package:flutter_tools/executable.dart:91:3)
解决方案
  • 验证终端Java环境:执行java -version和javac -version,确认输出为1.8.0_381。若仍显示17,执行source ~/.bash_profile或source ~/.zshrc(根据你使用的Shell)重新加载环境变量配置。
  • 确认全局环境变量配置:
    • 打开Shell配置文件(如~/.bash_profile、~/.zshrc),添加以下配置:
      export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
      export PATH=$JAVA_HOME/bin:$PATH
      
    • 保存后执行source命令生效,再用echo $JAVA_HOME和java -version验证配置是否正确。
  • 指定Gradle使用的JDK:
    • 进入项目的android目录,编辑gradle.properties,添加:
      org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
      
    • 或编辑项目根目录的local.properties,添加:
      java.home=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
      
  • 清理缓存重新构建:
    • 执行flutter clean,删除项目android/.gradle目录,再重新运行flutter build apk -v。
  • 检查IDE配置(如果用IDE构建):
    • 若使用Android Studio或VS Code,在IDE设置中指定JDK路径为OracleJDK 1.8的安装目录,避免IDE沿用旧的JDK配置。

内容的提问来源于stack exchange,提问作者Amin Memariani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:05:56