使用Java 11执行cordova run命令失败的解决咨询
解决Cordova run在OpenJDK 11环境下的avdmanager JAXB缺失问题
这个报错的核心原因是:Java 11 官方移除了JAXB(javax.xml.bind相关类库),而你当前使用的Android SDK命令行工具版本较旧,其中的avdmanager依赖这些已被移除的类。完全可以在Java 11环境下解决,无需回退到Java 8,以下是几种可行方案:
方案1:升级Android SDK命令行工具(推荐)
- 打开Android Studio的SDK Manager,切换到SDK Tools标签,勾选
Show Package Details - 找到
Android SDK Command-line Tools,选择最新版本(如10.0及以上)进行安装 - 确保系统环境变量
PATH中,新安装的命令行工具路径(通常是C:\Users\16515\AppData\Local\Android\Sdk\cmdline-tools\latest\bin)排在旧的tools/bin路径之前,让系统优先调用新版本工具
新版本的命令行工具已经适配了Java 11,不会再出现JAXB类缺失的问题。
方案2:手动为avdmanager添加JAXB依赖
- 找到Android SDK目录下的
avdmanager.bat(路径:C:\Users\16515\AppData\Local\Android\Sdk\tools\bin) - 下载JAXB相关依赖包:
jaxb-api.jar、jaxb-core.jar、jaxb-impl.jar、activation.jar,将它们放到C:\Users\16515\AppData\Local\Android\Sdk\tools\lib目录下 - 编辑
avdmanager.bat,找到启动Java的行,修改类路径参数,把下载的jar包加入进去:java %JAVA_OPTS% -cp "%CLASSPATH%;C:\Users\16515\AppData\Local\Android\Sdk\tools\lib\jaxb-api.jar;C:\Users\16515\AppData\Local\Android\Sdk\tools\lib\jaxb-core.jar;C:\Users\16515\AppData\Local\Android\Sdk\tools\lib\jaxb-impl.jar;C:\Users\16515\AppData\Local\Android\Sdk\tools\lib\activation.jar" com.android.sdklib.tool.AvdManagerCli %*
方案3:直接调试物理设备(跳过模拟器检测)
如果不需要使用Android模拟器,直接连接开启USB调试的物理设备,运行以下命令即可:
cordova run android --device
此命令会跳过查询模拟器列表的步骤,直接将应用部署到连接的物理设备上,避开avdmanager的调用。
补充说明:cordova build能正常运行是因为该命令不需要查询AVD模拟器列表,而cordova run默认会尝试检测可用模拟器,因此触发了avdmanager的报错。
内容的提问来源于stack exchange,提问作者patrick
相关产品推荐
相关产品推荐

