我下载并安装:
- 来自Oracle 的 JDK(
jdk-9.0.1_osx-x64_bin.dmg
) - 来自 Google 的 Android SDK (
sdk-tools-darwin-3859397.zip
)。
配置 PATH
变量后,我尝试运行 sdkmanager
,它取代了管理 SDK 组件的 android
命令。但是,它失败了,如下所示:
$ sdkmanager --list
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.SdkManagerCli.main(SdkManagerCli.java:117)
at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:93)
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版本:
$ java -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
有谁知道如何在不回到 Java 8 的情况下修复它?
相关问题
- 安装 android-sdk 失败:“java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema”
- 这篇文章问了一个类似的问题。但是,该帖子已关闭,唯一的答案建议回到 Java 8。
警告
请注意,我在上面已经提到,回到 Java 8 或并行运行它 不是 我想要的。
原文由 Siu Ching Pong -Asuka Kenji- 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 这个答案 的帮助下,我成功地解决了这个问题。
我们将在
sdkmanager
中应用修复。它是一个 shell 脚本。它位于$android_sdk/tools/bin
,其中$android_sdk
是您解压 Android SDK 的位置。sdkmanager
。DEFAULT_JVM_OPTS
变量的行。在我的副本中,它位于第 31 行:-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
。 请注意引号。 在我的副本中,该行变为:这是结果:
你好!有用!
-- 编辑:2017-11-07 –
请注意,您可能需要在运行后再次应用上述修复
sdkmanager --update
,因为sdkmanager
如果tools
程序包已更新,shell 脚本可能会被覆盖相关答案