安装android-sdk: "java.lang失败。NoClassDefFoundError: javax / xml /绑定/注释/ XmlSchema"

当安装android sdk工具时,会产生以下错误:

java.lang.NoClassDefFoundError: javax / xml /绑定/注释/ 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)
460136 次浏览

今天早上我遇到了类似的问题(尝试使用Unity3D为Android构建)。我最终卸载了JDK9并安装了Java SE开发套件8u144。希望这能有所帮助。

  1. brew cask uninstall java #卸载java9
  2. brew tap homebrew/cask-versions
  3. brew cask install java8 #安装java8
  4. __abc0#如果没有这个文件,下一步将发生错误
  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.

我找到了两个适合我的答案,而不必卸载create-react-app所需的JDK 10(或9)。JDK 9和JDK 10都不兼容android-sdk !


萧清邦-飞鸟健二-建议修改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时会被覆盖 查看他的帖子,以及他的链接,了解更多细节 此解决方案也是Github问题线程.

. 0中提到的解决方案之一

德国的文章表示冲突的来源,并给出不会被更新覆盖的修复 他建议将/Library/Java/JavaVirtualMachines/Info.plist重命名为一种方法,以便在寻找系统中Java的最高版本的脚本中模糊它。这样,JDK 8将作为默认值返回 显式引用JDK 10,或通过将其设置为$JAVA_HOME,您可以在需要时使用JDK 10,而不是默认值

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

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

源1, 源2

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

我在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请参见:https://stackoverflow.com/a/51644855/798165

要解决这个错误,可以降级Java版本。

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

Linux / MAC:

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

窗户:

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

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

Linux:

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

窗户:

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

为了永久保存它,你可以在Linux上导出配置文件中的JAVA_OPTS (.zshrc.bashrc等),或者在Windows上将它永久地添加为环境变量。


ps。这并不适用于Java 11/11+,它没有Java EE模块。对于这个选项是一个好主意,降低您的Java版本或等待Flutter 更新

裁判:JDK 11: Java EE模块之路的尽头

在命令行中运行java -versionjavac -version命令,以确保它们来自同一个JDK(例如:version 1.8.0_181)

如果不是,你必须修改PATH变量,使它只指向一个JDK。如果您不确定如何卸载,只需卸载除Java 8 (Windows中的添加/删除程序)之外的所有其他Java实例。目前,Unity和Android都建议你使用JDK 8。

在Java 8中,不需要导出java.se.ee模块,如其他一些答案所示。你也可以删除你所设置的任何JAVA_OPTS或其他环境变量

如果你不想改变你的Java版本(我不想),你可以暂时改变你的shell版本:

第一次运行

/usr/libexec/java_home -V

然后选择一个主版本,如果你安装了它,否则先安装它:

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

现在可以运行sdkmanager了。

因为Java 11已经删除了JavaEE,你需要下载一些jar并添加到类路径中:

< p > JAXB: https://javaee.github.io/jaxb-v2/ < / p > < p >于JAF: https://www.oracle.com/technetwork/articles/java/index-135046.html < / p >

然后编辑sdkmanager.bat,使设置CLASSPATH =…% CLASSPATH %;结尾

将CLASSPATH设置为包含JAXB和JAF:

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

那么sdkmanager.bat就可以工作了。

对于Linux用户(我使用Debian发行版,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以节省空间

步骤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开发 在@spassvogel的回答中,您还应该在~/中放置一个@ repositries .cfg文件。安卓系统目录 因为这需要更新工具回购列表
  2. 移动某些内容可能需要根权限。明智地使用sudo。
  3. 关于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时,一个简单的选项是安装__abc0,然后选择它作为默认值,使用:

sudo update-alternatives --config java

降低java版本。无论系统或ide。

确保java版本不高于8

在我的情况下。我改变ide java版本。这解决了我的问题。 enter image description here < / p >

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

更新2019 - 10:

作为在问题跟踪器中说明,谷歌一直致力于在当前jvm(9,10,11 +)上运行的新Android SDK命令行工具版本,并且不依赖于已弃用的JAXB EE模块!

你可以在Android Studio中下载并使用新的Android SDK命令行工具,或者手动从谷歌服务器下载它们:

对于最新版本,请检查repository.xml. dll中的url。

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

2021 - 03年更新:

最新的稳定命令行工具可以在谷歌Downloads-Website找到。这些工具比上面链接的工具更新。

我也面临同样的问题。虽然我是一个有点过时的开发人员(仍然使用windows开发:P)

要解决这个问题在windows上:

步骤1:如果没有安装jdk 8,请安装它(jdk 9或11不能工作,但您可以在其他开发用途中安装它们)。

使用Chocolatey非常简单:

Choco安装jdk8

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

步骤2:进入环境变量设置,将JAVA_HOME设置为jdk 8的安装目录。

JAVA_HOME

步骤3:进入path变量,添加jdk 8的bin目录,并将其移动到顶部。

 path_variable

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

可选步骤5:根据您在终端运行中的目标(可能需要将sdkmanager添加到路径或直接导航到目录):

sdkmanager——更新

这是所有!:哦,享受飘动吧!: D

对我来说,我安装了java版本8,只需要在“JDK位置”中选择java版本: enter image description here < / p >

对于我的情况,我使用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下使用AVD和SDK管理器在Qt)和11的不同工具。不能删除版本11。

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

所以对我来说,解决办法很简单。在~/Android/tools/bin/sdkmanager和~/Android/tools/bin/avdmanager的第二行添加如下内容:

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

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

因此,这些命令行工具以独立模式工作,它们也可以在其他工具(如Qt)调用时工作,而jdk 11仍然是其他工具的系统默认值。没有必要混合lib等…

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

在我的例子中,我有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,或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命令行工具的最新版本(撰写本文时为2.1)开始,不再需要给sdkmanager打补丁,也不再需要降级到古老的Java版本。

只需更新你的SDK包,并将你的命令行工具切换到latest版本,它将跟踪新版本:

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

如果sdkmanager不在你的PATH上,你可能需要提供它的完整路径,如果它显式引用了1.0工具,你可能需要在之后调整你的PATH

TLDR;试着在OSX上设置JAVA_HOME工作得很好

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上下载Android SDK Command-line Tools (latest)来解决,在Preferences > Appearance & Behavior > System Settings > Android SDK > SDK Tools下并重新运行flutter doctor --android-licenses

Android SDK path on Android Studio

命令行工具 .

最后,将新工具添加到你的PATH中,在你的.bashrc.zshrc或类似的目录中,在过时的工具之前:

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

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

您只需要运行下面的命令并选择您所选择的版本。这是所有!

sudo update-alternatives --config java

正如@steven指出的,安装Java 8(这里是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

然后从菜单中选择版本8。

这个问题有很多答案,由于用户安装了不同的工具链和使用不同的Java版本,答案也各不相同。

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

通过使用Android SDK管理器下载最新版本,您应该始终保持构建工具组件的更新。

Android studio允许您轻松管理已安装的sdk &构建工具,是的,它需要硬盘驱动器上的一些空间,但它会节省你一些时间。一旦熟悉了它的工作方式,就可以只考虑安装命令行工具了。

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

全新安装

  1. 删除你的本地Android文件夹,通常在主目录
  2. 下载Android studio
  3. 安装完成后,打开Settings,搜索Android SDK并打开它
  4. SDK Platforms中为你的应用选择目标Android版本
  5. SDK Tools选项卡中,选择Android SDK Build-ToolsAndroid SDK Command-line Tools (latest)Android EmulatorAndroid SDK Platform-Tools
  6. 在按OK之前,检查Android SDK Location路径是否正确
  7. 点击OK,让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

enter image description here

enter image description here enter image description here < / p >

  • 重启命令行工具 enter image description here < / p >

  • 输入命令flutter doctor

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

  • 并通过输入y接受所有许可。

enter image description here

我的Java版本是15.0.1。适用于Mac操作系统。

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

  1. download zip: jaf- 11_1 .zip from: 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 from: 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 Stuido SDK Manager

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

运行“扑动医生——android-licenses"Windows 10。我解出了这两个环境变量

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


ANDROID_SDK_HOME
C:\Users\youruser\.android

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

在构建flutter应用程序时发生错误,提示android sdk许可证不接受。因此,在接受许可时发生了此错误。

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

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

  1. 打开android studio。
  2. 打开SDK管理器(参考下图): 李enter image description here < / >
  1. 在工具栏中选择SDK工具。
  2. 勾选选项Android SDK命令行工具(最新)
  3. 应用它。
  4. 如果使用flutter,则运行flutter doctor -android-licenses,或者您可以继续执行发生错误的进程。

窗户用户寻找解决方案

选项1Android Studio SDK管理器 . tools中安装cmdline-tools

enter image description here


选项2从这个链接下载

然后按照下面的教程来设置它 https://www.youtube.com/watch?v=wvi03sOBKWQ < / p >

接下来将cmdline-tools安装的路径复制到< >强本< / >强文件夹中

< p > 使用Android Studio SDK Manager
cmdline-tools安装在Android SDK Location
下 例子:
C:\Users\ % 用户名% \ AppData \当地\ Android最新\ Sdk < /强> \ cmdline-tools \ \ bin


然后将该路径粘贴到环境变量路径中

控制面板>将<强>视图由< / >强设置为大图标>系统>在右侧的'< /强> < >强相关的设置'下选择系统高级设置>环境变量

从这里开始,在系统变量下添加路径 enter image description here < / p >

如果tools路径(如图中红框所示)存在,确保cmdline-tools路径在tools路径(如图中红框所示)之上。

选择cmdline-tools路径(用蓝色突出显示) >向上移动

这个问题有多种答案,取决于潜在的问题。也有多种答案可以间接解决实际问题。

核心问题是:

  1. Android SDK工具与最新的甲骨文 JDK有问题。你可以使用最新的开放 JDK。(最新的OpenJDK附带Android Studio。)

  2. 你没有安装最新的Android SDK命令行工具。

  3. 你已经安装了最新的Android SDK命令行工具,但是你使用的是E:\Android\ SDK \tools\bin而不是E:\Android\ SDK \cmdline-tools\latest\bin。

这里有一些系统的步骤来识别和解决你可能遇到的上述问题。

  1. 将环境变量指向Android Studio中的OpenJDK安装。根据您的安装,在这里找到:E:\Program Files\Android\Android Studio\jre。你必须遍历所有必要的变量,如PATH、JAVA_HOME、JAVA_BIN等,并确保它们都指向你的OpenJDK。

注意:您不必卸载/重新安装jdk。这可能只是修复了你上面的变量作为一个副作用。

  1. 检查你的环境变量是否正确(Windows: echo %JAVA_HOME%, echo %PATH%, where javac,等等)

  2. 进入Android Studio。在“设置”中,导航到“外观”行为比;系统设置>Android SDK !”安装“Android SDK命令行工具”;

  3. 在shell中,打开E:\Android\Sdk\cmdline-tools\latest\bin并运行sdkmanager——install "cmdline-tools;latest"

其他故障排除提示: 我把Android环境变量也弄乱了。运行'flutter doctor -v',输出将帮助您排除其他环境配置问题