尝试接受 Android Studio 许可证时,我不断收到此错误“java.lang.NoClassDefFoundError”

Posted

技术标签:

【中文标题】尝试接受 Android Studio 许可证时,我不断收到此错误“java.lang.NoClassDefFoundError”【英文标题】:When trying to accept Android Studio licenses, I keep getting this error "java.lang.NoClassDefFoundError" 【发布时间】:2020-12-02 21:11:28 【问题描述】:

我正在尝试构建我的第一个 android studio 项目。我不断收到此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema

当我尝试构建最简单的“MyFirstApp”项目时,我没有收到此错误。

我尝试从终端运行sdkmanager

cd /Users/username/Library/Android/sdk/tools/bin
./sdkmanager --licenses

以及通过物理访问 sdkmanager 目录,然后双击 sdkmanager

我在两者上都遇到了同样的错误。我还更新了我的 Java。那么,为什么我会收到此错误?我该如何解决?

完整的错误如下:

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

另外,只是在这里添加它,如果它是相关的,这是我运行java --version时得到的输出:

java 13.0.2 2020-01-14
Java(TM) SE Runtime Environment (build 13.0.2+8)
Java HotSpot(TM) 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)

【问题讨论】:

【参考方案1】:

我检查了 Android Studio 内部的 gradle 同步,发现那里还有另一个错误:

ERROR: Module 'app': platform 'android-29' not found.

这可能是因为我下载了最新的 Android 版本,即 Android R(Android Studio 中的 Android 30),而这个项目可能需要版本 29(Android Q)。因此,一旦我下载并安装了 Android 29,转到工具 -> SDK 管理器,然后重新启动 Android Studio,它就可以正常工作并且不会出现任何错误。

【讨论】:

【参考方案2】:

sdkmanager 需要 JDK 8 才能正常工作,尤其是在运行 --licenses 选项时。它不需要是 oracle JDK,AdoptOpenJDK 对我来说很好。

【讨论】:

以上是关于尝试接受 Android Studio 许可证时,我不断收到此错误“java.lang.NoClassDefFoundError”的主要内容,如果未能解决你的问题,请参考以下文章

在android studio上运行应用程序的sdk错误

无法接受 Android 许可证 (Flutter)

运行颤振医生时无法接受安卓许可证

Flutter 无法接受安卓许可

不接受某些 Android 许可证。要解决此问题,请运行:flutter doctor --android-licenses

Android Studio App未经许可或按钮发送图像