【问题标题】:Android SDK manager throw Exception with Java 9 [duplicate]Android SDK管理器使用Java 9抛出异常[重复]
【发布时间】:2018-04-30 21:44:18
【问题描述】:

在运行sdkmanager 时将sdk-tools-darwin-4333796 (26.1.1) 与Java 9 一起使用会抛出:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
        at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
        at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
        at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
        at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
        at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
        ... 5 more

【问题讨论】:

  • 我认为 java 9 不包含此文件路径到指定文件。看看这个类似的问题。它可能会帮助您解决问题。 stackoverflow.com/questions/43574426/…
  • 是的,./sdkmanager --add-modules java.xml.bind 运行时没有错误,但同时它不允许我向它添加任何参数(比如 ./sdkmanager --version --add-modules java.xml.bind 只会显示手动。
  • @AeroWang Warning: Unknown argument --add-modules 在我的安装中。

标签: java android android-sdk-tools java-9


【解决方案1】:

编辑sdkmanager 文件,找到DEFAULT_JVM_OPTS 并为其添加--add-modules java.xml.bind 参数。

例如,如果您的 sdkmanager 文件有

DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"'

改成

DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" --add-modules java.xml.bind'

更新:以上内容适用于 Java 9 和 10。java.xml.bind 模块在 Java 11 中已被删除,并且不会被发现。
https://www.oracle.com/java/technologies/javase/jdk-11-relnote.html#JDK-8190378


附加更新:显然sdkmanager 有两个版本,一个需要 Java8 的已弃用版本,一个需要 Java 11 的新版本。请参阅 @987654322 @

【讨论】:

  • 谢谢。当您在那里时,也值得对 ./avdmanager 进行相同的更改。
  • 感谢它对我有用。我已经改变如下: DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" --add-modules java.xml.bind'
  • 您也可以将 JAVA_OPTS 环境变量设置为相同的值,而无需修改脚本。
  • 对我不起作用。我在启动层 java.lang.module.FindException 初始化期间出错:找不到模块 java.xml.bind
  • 不幸的是,这不再起作用了。奇怪的是,您可以从 Android Studio GUI 运行 SDK Manager,而且它似乎工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多