You need to enable JavaScript to run this app. flutter doctor --android-licenses报java.xml.bind模块缺失咨询
优惠活动
大模型
产品
解决方案
定价
更多

flutter doctor --android-licenses报java.xml.bind模块缺失咨询

报错根因
  • 执行flutter doctor --android-licenses时触发的java.lang.module.FindException: Module java.xml.bind not found,本质是最新版Android Studio自带的JetBrains Runtime(JBR)基于Java 17构建,自Java 9引入模块化机制后,java.xml.bind(JAXB API)被移出JDK默认加载模块范围,后续版本该组件转为独立依赖,而命令底层调用的Android SDK sdkmanager工具未适配这一模块变更,因此触发异常。
落地解决操作

方案1:调整sdkmanager启动参数,适配模块加载规则

  • 定位本地Android SDK路径下的sdkmanager脚本,Mac上默认路径为~/Library/Android/sdk/cmdline-tools/latest/bin/sdkmanager;若手动修改过SDK位置,可在Android Studio设置页搜索“Android SDK”,从页面顶部的Android SDK Location字段获取准确路径。
  • 终端执行命令编辑脚本:
    nano <实际的sdkmanager脚本完整路径>
  • 找到脚本中定义默认JVM参数的代码行:
    DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
  • 在参数列表中补充缺失模块的加载指令,修改为:
    DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m" "--add-modules java.xml.bind"'
  • 按Ctrl+O回车保存,再按Ctrl+X退出nano编辑器。
  • 重新执行flutter doctor --android-licenses,按命令行提示依次输入y确认所有许可协议即可。

方案2:临时切换兼容JDK版本执行许可校验

如果修改脚本后仍然提示模块缺失,可临时切换Flutter关联的JDK版本执行命令:

  • 确认本地已安装Java 8(Java 8默认内置java.xml.bind模块,无适配问题),Mac上通过Homebrew安装的Temurin 8版本默认路径为/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home
  • 执行命令临时指定Flutter的JDK路径:
    flutter config --jdk-dir="上述Java 8的实际安装路径"
  • 重新运行flutter doctor --android-licenses完成许可确认。

操作提示
完成许可校验后,可执行命令切回Android Studio自带的JBR,避免后续构建应用时出现版本兼容问题:
flutter config --jdk-dir "/Applications/Android Studio.app/Contents/jbr/Contents/Home"
若后续升级Command-line Tools,脚本配置可能会被覆盖,届时需重新调整参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 00:45:03