运行 android sdkmanager 结果 java.lang.ClassNotFoundException

Running android sdkmanager results in java.lang.ClassNotFoundException

我刚刚在 macOS 上安装了 Android Studio。我需要接受许可证。我如何 运行 sdkmanager

$tools/bin/sdkmanager 
APP_HOME=/Users/steve/Library/Android/sdk/tools
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:583)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)

请注意,我 运行宁 java11 其中 javax.xml.bind 不存在。

临时解决方法是我将 jdk 版本重置为 java8。然后 sdkmanager 能够 运行。有没有其他问题还有待观察。

  • 安装java8,

  • 打开 android 工作室 > 进入配置 > select sdk 管理器 > 进入 sdk 工具 > 在 android sdk 命令行工具上打勾 >申请 > 等待安装

  • 输入命令

flutter doctor --android-licenses

  • 并输入 y
  • 接受所有许可