Failed to install android-sdk: "java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema"

Failed to install android-sdk: "java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema"

安装 android sdk 工具时出现以下错误:

java.lang.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"
==> 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
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" 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)

我今天早上遇到了类似的问题(尝试使用 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

奇怪的是 Java9 与 android-sdk

不兼容
$ avdmanager
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.AvdManagerCli.run(AvdManagerCli.java:213)
    at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:200)
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

将所有命令合二为一,方便参考:

$ sudo rm -fr /Library/Java/JavaVirtualMachines/jdk-9*.jdk/
$ sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
$ sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefPane

$ /usr/libexec/java_home -V
Unable to find any JVMs matching version "(null)".
Matching Java Virtual Machines (0):
Default Java Virtual Machines (0):
No Java runtime present, try --request to install

$ brew tap caskroom/versions
$ brew cask install java8
$ touch ~/.android/repositories.cfg
$ brew cask install android-sdk
$ echo 'export ANDROID_SDK_ROOT="/usr/local/share/android-sdk"' >> ~/.bash_profile
$ java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
$ avdmanager

Usage:
      avdmanager [global options] [action] [action options]
      Global options:
  -s --silent     : Silent mode, shows errors only.
  -v --verbose    : Verbose mode, shows errors, warnings and all messages.
     --clear-cache: Clear the SDK Manager repository manifest cache.
  -h --help       : Help on a specific command.

Valid actions are composed of a verb and an optional direct object:
-   list              : Lists existing targets or virtual devices.
-   list avd          : Lists existing Android Virtual Devices.
-   list target       : Lists existing targets.
-   list device       : Lists existing devices.
- create avd          : Creates a new Android Virtual Device.
-   move avd          : Moves or renames an Android Virtual Device.
- delete avd          : Deletes an Android Virtual Device.

我找到了两个对我有用的答案,而无需卸载 JDK 10(或 9),这是我 create-react-app 所需要的。 JDK 9 和 10 都不兼容 android-sdk !


Siu Ching Pong -Asuka Kenji- 建议 mod 修改 sdkmanager 脚本,替换此行:

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

与:

DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

注意这个mod会在更新sdkmanager时被覆盖
查看他的 post 和他链接到的那个,了解更多详情。
该方案也是本github issues thread.

中提到的方案之一

指出冲突的来源,并提出不会被更新覆盖的修复。
他建议重命名 /Library/Java/JavaVirtualMachines/Info.plist 作为一种从脚本中隐藏它的方法,该脚本会查找驻留在您系统上的 Java 的最高版本。这样就默认返回了JDK8。
明确引用 JDK 10,或将其设置为 $JAVA_HOME,您可以在需要时使用 JDK 10 而不是默认值。
详情在他的 post.

set JAVA_OPTS=-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee

这为我解决了 Windows 上的问题。

Source 1, source 2

对于 windows 机器,如果它超过 1.8.172,请卸载 JDK。 安装 JDK 1.8.172

我在 windows 10 和 java 10 中遇到了同样的问题。我卸载了 java 10 并安装了 java8 它现在对我来说工作正常: )

在 Mac/Linux 上使用以下命令:

export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

适用于 JDK 9 和 10,无需 修补任何脚本(sdkmanager、avdmanager)。

对于 Java 11,请参阅:

要解决此错误,您可以降级 Java 版本。

或者在您的终端上导出以下选项:

Linux/MAC:

export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

Windows:

set JAVA_OPTS=-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee

如果这不起作用,请尝试导出 java.xml.bind

Linux:

export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.xml.bind'

Windows:

set JAVA_OPTS=-XX:+IgnoreUnrecognizedVMOptions --add-modules java.xml.bind

要永久保存它,您可以在 Linux(.zshrc.bashrc 等)上导出配置文件中的 JAVA_OPTS 或将其添加为永久在 Windows.

上的环境变量

ps. 这不适用于 Java 11/11+,它没有 Java EE 模块。对于此选项是个好主意,请降级 Java 版本或等待 Flutter update.

参考:JDK 11: End of the road for Java EE modules

命令行中的

运行 java -versionjavac -version 命令以确保它们来自相同的 JDK (例如:版本 1.8.0_181)

如果不是,您必须修改 PATH 变量,使其仅指向一个 JDK。如果您不确定如何卸载,只需卸载除 Java 8(Add/Remove 中的 Windows 程序)之外的所有其他 Java 实例。至于今天,Unity和Android都推荐大家使用JDK 8.

使用 Java 8,不需要导出 java.se.ee 模块,如其他一些答案所示。您还可以删除任何 JAVA_OPTS 或您设置的其他 environment variables

如果您不想更改 Java 版本(我不想),您可以临时更改 shell 中的版本:

第一个运行

/usr/libexec/java_home -V

如果已经安装,则选择主版本,否则先安装:

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

现在您可以运行 sdkmanager。

由于 Java 11 已删除 JavaEE,您需要下载一些 jar 并添加到类路径中:

JAXB: https://javaee.github.io/jaxb-v2/

贾夫: https://www.oracle.com/technetwork/articles/java/index-135046.html

然后编辑 sdkmanager.bat 以便 set CLASSPATH=...;%CLASSPATH%[=13= 结尾]

设置 CLASSPATH 以包含 JAXB 和 JAF:

set CLASSPATH=jaxb-core.jar;jaxb-impl.jar;jaxb-api.jar;activation.jar

那么sdkmanager.bat就可以了。

对于 Linux 用户(我使用的是 Debian Distro、Kali) 这是我解决问题的方法。

如果您还没有 jdk-8,您想在 oracle 的网站上获得它

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

我得到了 jdk-8u191-linux-x64.tar.gz

第 1 步 - 安装 Java 像这样移动并解压到合适的位置

$ mv jdk-8u191-linux-x64.tar.gz /suitablelocation/
$ tar -xzvf /suitablelocation/jdk-8u191-linux-x64.tar.gz

你应该得到一个像 jdk1.8.0_191 这样的解压文件夹 您可以事后删除 tarball 以保存 space

第 2 步 - 设置替代默认 java 位置

$ update-alternatives --install /usr/bin/java java /suitablelocation/jdk1.8.0_191/bin/java 1
$ update-alternatives --install /usr/bin/javac javac /suitablelocation/jdk1.8.0_191/bin/javac 1

第 3 步 - 选择您的备选方案作为默认值

$ update-alternatives --set java /suitablelocation/jdk1.8.0_191/bin/java
$ update-alternatives --set javac /suitablelocation/jdk1.8.0_191/bin/javac

第 4 步 - 确认默认 java 版本

$ java -version

备注

  1. 原文章在这里:https://forums.kali.org/showthread.php?41-Installing-Java-on-Kali-Linux, 还设置了 mozilla 的默认插件。我假设我们真的不需要插件 只是想为 android.
  2. 开发
  3. 如@spassvogel 的回答,您还应该在 ~/.android 目录中放置一个 @repositories.cfg 文件 因为这是更新工具回购列表所必需的
  4. 移动一些东西可能需要 root 权限。明智地使用 sudo。
  5. sdkmanager的使用方法见官方指南:https://developer.android.com/studio/command-line/sdkmanager

您需要将以下内容添加到您的个人资料中(适用于 MacOS):

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

无需修补任何东西。

我 运行 在 运行 时遇到同样的问题:

$ /Users/<username>/Library/Android/sdk/tools/bin/sdkmanager "platforms;android-28" "build-tools;28.0.3"_

我解决了

$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home    

$ ls /Library/Java/JavaVirtualMachines/

jdk-11.0.1.jdk      
jdk1.8.0_202.jdk

将 Java 更改为使用 1.8

$ export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home'

然后相同的命令运行正常

$ /Users/<username>/Library/Android/sdk/tools/bin/sdkmanager "platforms;android-28" "build-tools;28.0.3"

使用 Linux 时,一个简单的选择是安装 JDK version 8 然后选择它作为默认使用:

sudo update-alternatives --config java

降级您的 java version.Whatever 系统或 ide。

确保java版本不高于8

在我的 case.I 中更改 ide java verion.This 解决了我的问题。

当您的 Android stuio/jre 使用不同版本的 java 时,您将收到此错误。要解决它,只需将 Android studio/jre 设置为您的 JAVA_HOME。并卸载您自己的 java.

2019-10 更新:

由于 stated in the issue tracker,Google 一直致力于开发新的 Android SDK 命令行工具 版本,该版本可在当前 JVM 上运行( 9、10、11+),并且不依赖于已弃用的 JAXB EE 模块!

您可以在 Android Studio 中下载并使用新的 Android SDK 命令行工具,或者从 Google 服务器:

对于最新版本,请检查 repository.xml.

中的 URL

如果您手动解压缩命令行工具,请注意将它们放在 $ANDROID_HOME 的子文件夹中(例如 $ANDROID_HOME/cmdline-tools/...)。

2021 年 3 月更新:

最新稳定的命令行工具可在 Googles Downloads-Website 获得。这些工具比上面链接的工具更新。

我遇到了同样的问题。虽然我有点过时的开发人员(仍在使用 windows 开发 :P)

解决这个问题 在 windows :

第 1 步:如果未安装 jdk 8(jdk 9 或 11 不起作用,但您可以安装它们用于其他开发用途)。

使用 Chocolatey 非常简单:

choco install jdk8

(如果使用 Chocolatey 安装,请跳过第 2 步和第 3 步)

第 2 步:转到环境变量设置并将 JAVA_HOME 设置为 jdk 8 的安装目录。

第 3 步:转到路径变量并添加 jdk8 的 bin 目录并将其移动到顶部。

第 4 步:关闭所有打开的终端会话并重新启动新会话

可选步骤 5:取决于您在终端 objective 中的 运行(可能需要将 sdkmanager 添加到路径或仅导航到目录):

sdkmanager --update

就是这样! :O 享受飘飘然! :D

对我来说,我安装了 java 版本 8 并且 select java 版本在 "JDK location" 中:

就我的情况而言,我使用 sdkman 来管理多个 java 版本。我将默认 java 版本设置为 13。安装版本 8,现在它工作正常。

我最近通过卸载更高版本的JDK并安装JDK解决了这个问题 8.安装JDK后你需要给出路径。然后你需要在 "C:\Users\Milan Adhikari\AppData\Local\Android\Sdk\tools" 和 运行 "sdkmanager --update" 中打开命令提示符,这将更新你的 sdk 然后你需要在 cmd 中 运行 "flutter doctor --android-licenses" 并接受所有许可证。
现在你的问题应该已经解决了。

最好的方法是使用下面的命令

   $ wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip
   $ unzip \platform-tools-latest-linux.zip
   $ sudo cp platform-tools/adb /usr/bin/adb
   $ sudo cp platform-tools/fastboot /usr/bin/fastboot

现在 运行 adb 版本以验证它是否已更新。

就我而言,我需要 JDK 8(尝试在 ubuntu 下的 Qt 中使用 AVD 和 SDK 管理器)和 11 用于不同的工具。删除版本 11 不是一个选项。

'JAVA_OPTS' 解决方案没有做任何事情。我真的不喜欢导出 JAVA_HOME,因为它可能会强制您从同一个 shell(如 Qt)启动任何调用这些实用程序的工具,或者强制您将其永久化,这不是方便。

所以对我来说,解决方案非常简单。在 ~/Android/tools/bin/sdkmanager 和 ~/Android/tools/bin/avdmanager:

的第二行添加类似这样的内容

JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"

(或您的 rev 8 jdk 的任何路径)。

因此,这些命令行工具以独立模式工作,它们在被其他工具(如 Qt)调用时也可以工作,并且 jdk11 仍然是其他工具的系统默认值。无需混合库等...

唯一的缺点是对这些命令行工具的任何更新都会删除这些修改,您必须将其重新放入。

就我而言,我有 Java 14 个,需要 Java 8 个。

我在 Arch Linux 并且已经安装 jdk8-openjdk jre8-openjdk https://www.archlinux.org/packages/extra/x86_64/java8-openjdk/

对于 Debian 用户 https://wiki.debian.org/Java, or Fedora https://docs.fedoraproject.org/en-US/quick-docs/installing-java/

在执行以下步骤之前,使用包管理器安装 Java 8(或所需版本,在本例中为 jdk8-openjdk jre8-openjdk)。


1。找出我的 Java:

在哪里
# which java
/usr/bin/java

2。正在检查 java 个文件:

我可以看到这里所有 java 个文件都是指向 /usr/lib/jvm/default[something] 的链接。这意味着 java 命令链接到某些特定版本的 java 可执行文件。

# ls -l /usr/bin/java*
lrwxrwxrwx 1 root root 37 May 16 06:30 /usr/bin/java -> /usr/lib/jvm/default-runtime/bin/java
lrwxrwxrwx 1 root root 30 May 16 06:30 /usr/bin/javac -> /usr/lib/jvm/default/bin/javac
lrwxrwxrwx 1 root root 32 May 16 06:30 /usr/bin/javadoc -> /usr/lib/jvm/default/bin/javadoc
lrwxrwxrwx 1 root root 30 May 16 06:30 /usr/bin/javah -> /usr/lib/jvm/default/bin/javah
lrwxrwxrwx 1 root root 30 May 16 06:30 /usr/bin/javap -> /usr/lib/jvm/default/bin/javap

3。检查 defaultdefault-runtime

在这里我可以看到默认版本链接到 14(唯一安装版本)。

# cd /usr/lib/jvm
# ls -l
lrwxrwxrwx 1 root root   14 Aug  8 20:44 default -> java-14-openjdk
lrwxrwxrwx 1 root root   14 Aug  8 20:44 default-runtime -> java-14-openjdk
drwxr-xr-x 7 root root 4096 Jul 19 22:38 java-14-openjdk
drwxr-xr-x 6 root root 4096 Aug  8 20:42 java-8-openjdk

4。切换默认版本

首先,删除链接到 java-14 版本的现有 defaultdefault-runtime

# rm default default-runtime

然后,创建指向所需版本的新链接(在本例中为 java-8)。

# ln -s java-8-openjdk default
# ln -s java-8-openjdk default-runtime

策略是使用上面的 ln -s 链接到所需的软件版本(在本例中为 java8)。然后,此链接链接到 java bin 目录中的二进制文件( 无需更改 $PATH 环境变量!


或者您可能希望使用 archlinux-java 命令更改 Java 版本,而不是更安全的方法:https://wiki.archlinux.org/index.php/Java

从 Android command-line 工具的最新版本(撰写本文时为 2.1)开始,不再需要修补 sdkmanager 也不再需要降级到 [=25 的旧版本=].

只需更新您的 SDK 包并将您的 command-line 工具切换到 latest 版本,它将跟踪新版本的出现:

sdkmanager --update
sdkmanager 'cmdline-tools;latest'
sdkmanager --uninstall 'cmdline-tools;1.0'

如果 sdkmanager 不在您的 PATH 上,您可能需要提供 sdkmanager 的完整路径,如果 PATH 指的是 1.0 显式工具。

TLDR;尝试设置 JAVA_HOME 在 OSX

上对我来说效果很好
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

从 AdoptOpenJDK 安装 JDKs 8 ( LTS ):

# brew tap adoptopenjdk/openjdk

brew cask install adoptopenjdk/openjdk/adoptopenjdk8

刚遇到这个错误,通过在 Android Studio 上的 Preferences > Appearance & Behavior > System Settings > Android SDK > SDK Tools 和 re-running flutter doctor --android-licenses

下下载 Android SDK Command-line Tools (latest) 解决了

最后,将新工具添加到您的路径中,在您的 .bashrc.zshrc 或类似工具中,在过时的工具之前:

export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin

无需卸载计算机上已安装的其他 java 版本。无论何时需要,您都可以方便地使用实用程序 'update-alternatives' 选择您希望激活的 Java 运行 时间。它将自动更新所需的符号链接。

您只需要 运行 下面的命令和 select 您选择的版本。就这些!

sudo update-alternatives --config java

正如@steven 指出的那样,安装 Java 8(此处 link 用于 Ubuntu 16.04、18.04 和 20.04/20.10 https://computingforgeeks.com/how-to-install-java-8-on-ubuntu/),然后将其设置为使用此命令的默认 Java 版本:

sudo update-alternatives --config java

我遇到了同样的问题,并按照建议安装了 openjdk-8-jdk。检查 javac -version 结果版本正确,但 java -version 显示版本 11。

解决方案是使用:

sudo update-alternatives --config java

和 select 菜单中的版本 8。

这个问题有很多答案,由于用户安装不同的工具链和使用不同的 Java 版本,所以答案都不一样。

使用 Android 开发工具链的推荐方法,或者至少是我建议使用的方法,是遵循 Android Studio 文档中的说明:

You should always keep your Build Tools component updated by downloading the latest version using the Android SDK Manager.

Android studio 允许您轻松管理已安装的 SDK 和构建工具,是的,它需要一些 space 在您的硬盘上,但它会节省您一些时间。一旦你熟悉了它的工作原理,那么你就可以考虑只安装命令行工具了。

如果没有特殊原因使用旧 Java 版本,请使用最新(稳定)版本,您将拥有有趣的新功能,并且编译的应用程序将受益于所有新的优化。

全新安装

  1. 删除本地 Android 文件夹,通常在主目录中
  2. Download Android studio
  3. 安装后,打开 Settings,搜索 Android SDK 并打开它
  4. SDK Platforms select 您的应用的目标 Android 版本
  5. SDK Tools选项卡中,selectAndroid SDK Build-ToolsAndroid SDK Command-line Tools (latest)Android EmulatorAndroid SDK Platform-Tools
  6. 在按“确定”之前,请检查 Android SDK Location 路径是否适合您
  7. 按确定,让 Android Studio 下载并安装所有内容

(可选)如果您需要从命令行使用已安装的二进制文件,请务必将其文件夹添加到您的 PATH 变量中。如果您使用 Android studio,则不需要它。

我的机器上安装了 Java 14,无论如何你可以使用 Android Studio 附带的 jre。

  • 我也有这个错误
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:190)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
        ... 5 more
  • 然后不是卸载最新的 java 环境,(在我的例子中是 java 13)
  • 和安装 java 8
  • 我已经完成了以下步骤
  • open the android studio > go to configure > select sdk manager > go to sdk tools > make a tick on android sdk command line tools >apply > and wait for installation

  • 重启命令行工具

  • 输入指令flutter doctor

  • 输入指令flutter doctor --android-licenses

  • 并输入 y

    接受所有许可

我的 Java 版本是 15.0.1 。对于 OS Mac.

这就是我解决问题的方法。

  1. 已下载 zip:jaf-1_1_1.zip 来自:https://download.oracle.com/otn-pub/java/jaf/1.1.1/jaf-1_1_1.zip?AuthParam=1609860571_68ca6f30491c76e81970a3849504fb6a

  2. 从以下位置下载了 zip:jaxb-ri-2.3。1.zip:https://download.oracle.com/otn-pub/java/jaf/1.1.1/jaf-1_1_1.zip?AuthParam=1609860571_68ca6f30491c76e81970a3849504fb6a

  3. 解压缩到一个文件夹中:~/jars/。导出类路径如下

export  
 CLASSPATH=~/jars/FastInfoset.jar:~/jars/activation.jar:~/jars/codemodel.jar:~/jars/dtd-parser.jar:~/jars/istack-commons-runtime.jar:~/jars/istack-commons-tools.jar:~/jars/jaf-1.1.1:~/jars/jaf-1_1_1.zip:~/jars/javax.activation-api.jar:~/jars/jaxb-api.jar:~/jars/jaxb-jxc.jar:~/jars/jaxb-ri:~/jars/jaxb-ri-2.3.1.zip:~/jars/jaxb-runtime.jar:~/jars/jaxb-xjc.jar:~/jars/relaxng-datatype.jar:~/jars/rngom.jar:~/jars/stax-ex.jar:~/jars/txw2.jar:~/jars/xsom.jar
  1. 接下来编辑文件:cd ~/Library/Android/sdk/tools/bin/sdkmanager 将 CLASSPATH 更改为以下内容

CLASSPATH=$CLASSPATH:$APP...

保存文件并再次运行命令。

就我而言,我的机器上没有安装所需的 sdk 版本。

所以请确保你已经安装了错误中给出的sdk版本。

在这里您可以通过 Android Studio 导航检查和安装。

更新了我当前的 Android SDK,一切都很顺利。

得到这个错误 运行ning "flutter doctor --android-licenses" 在 Windows 10. 我解决了它创建这两个环境变量

ANDROID_SDK_ROOT
C:\Users\youruser\AppData\Local\Android\Sdk

ANDROID_SDK_HOME
C:\Users\youruser\.android

刷新环境变量或重新启动,然后再次运行命令。

我正在使用 macOS,在构建 flutter 应用程序时发生错误,提示 android sdk 许可证未被接受。因此,在接受许可时发生了这个错误。

在我的案例中出现此错误的原因是我没有安装接受许可证所需的 sdkmanager 命令行工具。

所以,安装命令行工具最简单的方法是:

  1. 打开android工作室。
  2. 打开SDK管理器(参考下图):
  1. Select里面的SDK工具吧。
  2. 勾选选项Android SDK命令行工具(最新)
  3. 应用它。
  4. 运行 flutter doctor -android-licenses if using flutter or you can continue the process of the error.