在使用 OpenJDK 11 的 MacOS 上接受 Android SDK 许可证

我刚刚安装了Android Studio并导入了一个项目。然而,我无法构建该项目,因为我显然没有证明我对全能谷歌的奉献接受了相关许可。


> Failed to install the following Android SDK packages as some licences have not been accepted.

     build-tools;28.0.3 Android SDK Build-Tools 28.0.3

     platforms;android-28 Android SDK Platform 28

经过一番向无所不知的谷歌搜索祈祷后,我发现 shell 脚本sdkmanager安装在不相关的位置,必须运行才能接受许可证。克服了最初的信仰测试问题后,我运行脚本并遇到了以下错误。


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)

    ... 5 mor

我在网上找到了很多有同样问题的人。


从这个问题来看,最流行的解决方案建议在 shell 脚本中找到特定行sdkmanager并添加 -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee. 这会导致以下错误。


Error occurred during initialization of boot layer

java.lang.module.FindException: Module java.se.ee not found

经过更多搜索和阅读其他答案后,上述更改似乎不适用于更新版本的 Java。建议如下。

  1. 手动修改sdkmanager脚本

  2. 降级到与步骤 1 中所做的修改兼容的旧版 Java

  3. 运行 shell 脚本并接受许可证

  4. 升级回当前的 Java 版本

  5. 最后编译项目

仅仅能够在我的 Mac 上编译 Android 应用程序似乎有点矫枉过正,但我愿意尝试。

有谁知道 2019 年首次在 Mac 上使用 Java 11 设置和编译 Android Studio 项目的一种不太复杂的方法吗?


手掌心
浏览 191回答 1
1回答

繁星点点滴滴

我遇到了同样的问题。~/Android/Sdk/tools/bin/sdkmanager看起来您正在使用过时的许可证接受脚本,该脚本依赖于 OpenJDK 8,如果您像我一样使用 Linux,则可能位于。切换 Java 版本(imo)的更好替代方法是通过 android studio 安装新的 android studio 命令行工具。转到搜索 -> sdk 管理器 -> sdk 工具,并且 Android SDK 命令行工具(最新)选项不应被勾选(但在我的屏幕截图中是这样)。勾选它,点击应用,android studio 将引导您完成在~/Android/Sdk/cmdline-tools/.现在简单来说~/Android/Sdk/cmdline-tools/latest/bin/sdkmanager --licenses。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java