安装Android SDK工具时,会发出以下错误:

JAVAlang.NoClassDefFoundError:javax/xml/bind/annotation/XmlSchema

为什么会发生这种情况,如何解决?

调试输出:

$ java --version
java 9
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
$ brew cask install android-sdk
==> Caveats
We will install android-sdk-tools, platform-tools, and build-tools for you.
You can control android sdk packages via the sdkmanager command.
You may want to add to your profile:
  'export ANDROID_SDK_ROOT=/usr/local/share/android-sdk'

This operation may take up to 10 minutes depending on your internet connection.
Please, be patient.

==> Satisfying dependencies
==> Downloading https://dl.google.com/android/repository/sdk-tools-darwin-3859397.zip
Already downloaded: /Users/tomasnovella/Library/Caches/Homebrew/Cask/android-sdk--3859397,26.0.1.zip
==> Verifying checksum for Cask android-sdk
==> Installing Cask android-sdk
==> Exception in thread "main"
==> JAVAlang.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
Error: Command failed to execute!

==> Failed command:
/usr/local/Caskroom/android-sdk/3859397,26.0.1/tools/bin/sdkmanager tools platform-tools build-tools;26.0.1

==> Standard Output of failed command:


==> Standard Error of failed command:
Exception in thread "main" JAVAlang.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)

推荐答案

今天早上我遇到了类似的问题(试图使用Unity3D为Android构建).我最终卸载了JDK9并安装了Java SE Development Kit 8u144.希望这能帮上忙.

  1. brew cask uninstall java#卸载java9
  2. brew tap homebrew/cask-versions
  3. brew cask install java8#安装java8
  4. touch ~/.android/repositories.cfg#如果没有此文件,下一步将发生错误
  5. brew install --cask android-sdk

Java相关问答推荐

使用返回的意外 PSQLException

如何重写 sql 查询以使用不存在的运算符激发

将 org.joda.time.Duration 迁移到 java.time.Duration

android studio中的 typewriter 效果

64位VM不启动指针压缩,导致-8内存对齐

Firebase 谷歌一键登录找不到匹配的凭据

bigdecimal 的问题

@Target-less 注释不能应用于 Java 19 中的类型参数声明:为什么不呢?

Java OpenCV 无法正确检测轮廓

利用 Java 流 API 从本身持有可流化集合的对象中检索数据

DFS 路径在较大的条目上有 stackoverflow 错误

try 使用 Comparator 对 ArrayList 进行排序

Kotlin/Java/JVM - 解析俄罗斯日期,如28 фев. 2019

如何将 EDT 中的日期字符串转换为 UTC 日期?

如果一个或多个必填字段具有空值,如何不进行整个对象的序列化?

Jackson 不同的反序列化与序列化方法

使用 Apache Commons 解决 CSV 文件中的无效数据

JMM:为什么这个结果是非法的?

Bytebuddy:如何生成本地方法?

MethodVisitor的(api, MethodVisitor)构造函数,是不是只需要读取