React-Native构建接受Android SDK许可报XmlSchema类找不到错误如何解决
问题解决方法
根本原因
你遇到的报错是因为旧版本的Android SDK sdkmanager 依赖JDK 8内置的JAXB模块,JDK 9及以上版本已经移除了该模块,所以运行命令时会抛出类找不到、模块缺失的异常。
优先推荐方案(无需处理命令行,最稳定)
直接通过Android Studio内置的SDK管理器完成许可同意和组件安装,步骤如下:
- 打开Android Studio,点击顶部菜单栏
Tools > SDK Manager - 切换到
SDK Tools标签页,勾选右下角的Show Package Details - 展开
Android SDK Build-Tools分类,勾选29.0.2版本 - 点击底部
Apply按钮,弹出许可协议窗口后勾选Accept确认安装 - 安装完成后直接重新构建React Native项目即可,无需额外操作
命令行解决方案(如果你需要通过命令行处理)
方案1:切换到兼容的JDK 8版本
- 卸载当前安装的高版本JDK,安装JDK 8(OpenJDK 8或Oracle JDK 8均可)
- 配置系统环境变量:
JAVA_HOME指向JDK 8的安装路径,将JDK 8的bin目录加入系统PATH - 重启命令行窗口,进入
sdkmanager.bat所在目录执行sdkmanager --licenses,按提示输入y同意所有许可即可
方案2:修改sdkmanager启动参数适配高版本JDK
- 打开你报错路径下的
C:\Users\jaspe\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat文件 - 找到
DEFAULT_JVM_OPTS的配置行,修改为以下内容:
set DEFAULT_JVM_OPTS=-XX:+IgnoreUnrecognizedVMOptions --add-modules java.xml.bind
- 保存修改后重新执行
sdkmanager --licenses即可正常运行
方案3:升级SDK命令行工具
- 打开Android Studio SDK Manager,在
SDK Tools标签页勾选Android SDK Command-line Tools (latest)安装 - 安装完成后,使用
Sdk\cmdline-tools\latest\bin目录下的新版sdkmanager执行许可命令,新版工具兼容JDK 11及以上版本,不会出现模块缺失报错
内容的提问来源于stack exchange,提问作者JasperMW
相关产品推荐
相关产品推荐

