安装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相关问答推荐

调用方法以try 并重新运行代码块

如何判断Java中的字符串中是否有多个字符是大写的

HandlerInterceptor 有一个 Object 处理参数,什么类型会被传入拦截器?

Springboot的@Controller和@RestController注解什么时候使用,底层概念是什么?

应用程序构建成功,但 IntelliJ 说我的模块没有读取其他模块

工厂设计模式在以下示例中如何帮助我们?

如何使用固定参数和可变参数制作流?

Stream API - 如果 filter() 紧随其后, sorted() 操作如何工作?

使用 Selenium Java 根据 HTML 单元格内容选择元素

如何制作未经开发者许可不得转售的应用程序

为什么 Intellij 想法会在 if 条件下警告空指针?

我们应该如何设计不同内部微服务之间的通信

带有标题的 Kotlin 格式 CSV

用于双向 Hibernate 关联的 MapStruct 自定义列表映射

如何从 Spring Statemachine 中获取当前子状态和父状态?

Java 的 Git Bash 终端编码问题

如何在 Intellij 中关闭“将文件添加到 git”?

无法解析方法“assertThat(int)”

如何找到与同一对象关联的最大对象计数

如何将 @RestController 添加到 spring-webflux 应用程序?