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

Oracle Java 9.0.1环境下sdkmanager启动失败求助

解决Java 9下SDK Manager启动失败的问题

嘿,这个问题我太熟了!你遇到的是Java 9+和旧版Android SDK Manager之间的兼容性冲突——从Java 9开始,Oracle把javax.xml.bind这类Java EE模块从默认类路径中移除了,但你的SDK Manager还依赖这些类,所以才会抛出NoClassDefFoundError。

下面给你三个可行的解决方案,按便捷性和长期适用性排序:

1. 临时启动时添加JVM参数(快速解决)

每次运行sdkmanager时,手动加上指定模块的JVM参数,让Java运行时加载缺失的类:

./sdkmanager --list --add-modules java.se.ee

如果想更精准地指定所需模块(避免加载不必要的模块),可以用:

./sdkmanager --list --add-modules javax.xml.bind,javax.activation,javax.xml.ws.annotation

执行这个命令后,SDK Manager应该就能正常列出包了。

2. 设置环境变量(一劳永逸)

不想每次都输冗长的参数?可以把JVM参数加到shell的环境变量里:

  • 打开你的shell配置文件(比如~/.bashrc、~/.zshrc或者~/.profile)
  • 添加一行:
    export JAVA_OPTS="--add-modules java.se.ee"
    
  • 保存后执行source ~/.bashrc(对应你的配置文件),让设置生效
    之后再运行./sdkmanager --list就不用额外加参数了。

3. 降级到Java 8(最稳妥的长期方案)

Android官方长期推荐使用Java 8来处理SDK工具,因为很多旧版Android开发工具对Java 9+的兼容性都不佳。如果条件允许,建议直接安装Java 8并设为默认版本:

  • 安装Oracle Java 8或OpenJDK 8
  • 用系统的Java版本管理工具切换,比如Linux下的update-alternatives:
    sudo update-alternatives --config java
    
  • 在弹出的选项中选择Java 8的条目即可

这个方案不仅能解决当前的SDK Manager问题,还能避免后续Android开发中遇到其他兼容性坑。

补充:如果之后你把Android SDK Tools更新到较新版本,可能就不需要上述操作了——新版的SDK Manager已经适配了Java 9+环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:42:46