flutter doctor --android-licenses 给出了一个java错误

Viv*_*ota 267 java windows dart android-studio flutter

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:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 5 more
Run Code Online (Sandbox Code Playgroud)

运行 flutter doctor --android-licenses 时出现上述错误。有谁知道为什么会发生这种情况以及我该如何解决?我已经在颤振控制台上运行它。

sar*_*Don 623

Android SDK Manager安装Android SDK 命令行工具为我完成了这项工作。

  1. 打开工具> SDK 管理器
  2. 从左侧选择Appearance & Behavior > System Settings > Android SDK
  3. 从顶部菜单中选择SDK Tools
  4. 检查Android SDK 命令行工具并单击“应用”。

第 1 步的替代方法:WINDOWS:文件>设置(Ctrl+Alt+S)/MAC:Android Studio >首选项


在此处输入图片说明

如果您在执行上述步骤后仍遇到问题,您可以尝试将您的系统升级到 JDK 8。升级到 JDK 8 的官方文档可在此处获得

  • 我在Windows环境下遇到了这个问题 (12认同)
  • 谢谢!这样就解决了问题,但是为什么呢?如果flutter doctor需要SDK命令行工具,为什么这些工具没有打包到flutter中? (6认同)
  • “Android SDK 命令行工具”是一个 Android SDK 软件包工具,随 Android Studio 一起提供(回复:https://developer.android.com/studio/command-line)。它不能包含在 flutter 安装中。 (3认同)
  • 显然,这在 MacBook 上是必需的,但在 Windows 上则不需要。我没有在 Windows 中设置命令行工具。 (2认同)
  • 与直觉相反的是,这个解决方案甚至对于使用 VS Code 进行开发的人来说也解决了这个问题。 (2认同)

Mil*_*hen 120

我是 Mac 用户,我解决了这个问题。

这个回答也帮助Windows用户和Linux用户从用户的反馈中解决问题。

起初,这就是我遇到的问题
$ flutter doctor -v 在此处输入图片说明

以下命令不适用于我的情况。
$ flutter doctor --android-licenses 在此处输入图片说明

解决这个问题的方法是安装
Android SDK Command-line Tools。如何?
您只需要通过以下两个步骤来完成。

安装:Android SDK 命令行工具

步骤 1. 打开 SDK Manager
Top Menu -> Tools -> SDK Manager 在此处输入图片说明

步骤 2. 安装命令行工具

  1. 展开外观和行为
  2. 展开系统设置
  3. 点击安卓SDK
  4. 单击SDK 工具选项卡
  5. 检查Android SDK 命令行工具(最新)
  6. 单击应用按钮。 在此处输入图片说明 然后点击确定按钮完成安装。

继续签署 android 许可证。

Android Studio 安装完成后,您可以执行以下操作。
$ flutter doctor --android-licenses
在此处输入图片说明 多次说是后,所有的Android许可证都已签署。

再次请颤振医生检查。

$扑医生 -v
在此处输入图片说明

您可以看到已 接受所有 Android 许可证。

恭喜,您已完成此任务!

  • 适用于 Windows。谢谢。 (3认同)
  • 也适用于 linux。 (2认同)
  • 适用于 MacBook M1 ✅ (2认同)
  • 在流行音乐上工作!_OS (2认同)

小智 61

我遇到了同样的问题,通过从 android studio 安装 coomand-line 工具解决了它

单击文件,设置然后在搜索栏上键入 sdk 并单击 android sdk 安卓开发工具包

然后点击sdk工具,勾选android命令行工具框,点击应用允许下载。然后尝试flutter doctor --android-licenses在您的 cmd上再次运行,您将被提示接受许可证


小智 13

似乎您遇到了 JDK 异常,当您没有在系统变量上设置JAVA_HOME或者您几乎设置了 JDK 但在错误的文件夹中或者您正在尝试运行 SDK 管理器(它允许您接受Android 许可证)使用错误的 JDK。

如果是 JDK 9 或更高版本:

实际上,Android SDK Manager 仅适用于在Android 开发的 JDK 8 版本上编译的 Gradle ,因此,如果您已经在系统变量上设置了最新的 JDK 版本,请考虑将其降级到 JDK 版本 8。

这个版本对我来说很好用:https : //www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

如果已经安装了 JDK 8

如果您手动将 JDK 文件夹解压缩到某个目录,则可能是您将其设置为“错误”。我的意思是:您指向bin Java 文件夹的方式错误,但它仍然有效。必须将JAVA_HOME设置为JDK的根目录,例如:在JDK压缩文件夹中,您必须将其解压缩并将系统变量指向解压缩文件夹中,不能直接在bin目录中,您必须将JAVA_HOME指向为系统变量并将 bin 文件夹声明为可执行文件。

例子:

Linux

在您的 shell 配置文件中:

export JAVA_HOME="/home/user/jdk1.8.0_261"
export PATH="$PATH:$JAVA_HOME/bin"
Run Code Online (Sandbox Code Playgroud)

视窗

在您的环境变量管理器中:

设置一个名为 JAVA_HOME 的新系统变量

在此处输入图片说明

然后,编辑 PATH 变量并向其添加一个新寄存器:

%JAVA_HOME%\bin
Run Code Online (Sandbox Code Playgroud)

实际上,我真的不知道如何在 MacOS 中管理 JDK,如果那是您的操作系统,抱歉:(

希望能帮助到你!


guy*_*guy 5

在 Linux 上

Android SDK仅适用于JDK 8因此请卸载当前JDK版本。

通过命令并按Tab 键进行自动完成,删除它显示的所有以开头的内容openjdk-

sudo apt remove openjdk-
Run Code Online (Sandbox Code Playgroud)

现在安装JDK 8

sudo apt install openjdk-8-jdk
Run Code Online (Sandbox Code Playgroud)


Pix*_*xel 5

您需要 JDK 8,因为在更高版本中删除了所需的文件。

安装后,您可以使用在版本之间切换

sudo update-alternatives --config java
Run Code Online (Sandbox Code Playgroud)

然后选择 JDK 8 的选项。这还将显示您需要的 JDK 8 安装位置:

export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/jre/"
PATH=$PATH:$JAVA_HOME/bin
Run Code Online (Sandbox Code Playgroud)