接受 SDK 许可时出现“java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema”
Posted
技术标签:
【中文标题】接受 SDK 许可时出现“java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema”【英文标题】:"java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema" when accepting SDK licenses 【发布时间】:2021-09-13 12:25:18 【问题描述】:好的,我正在尝试使用 android Studio 构建我的 React-Native 应用程序。我在构建时首先遇到了这个错误:
Failed to install the following Android SDK packages as some licences have not been accepted.
build-tools;29.0.2 Android SDK Build-Tools 29.0.2
To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager.
Alternatively, to transfer the license agreements from one workstation to another, see http://d.android.com/r/studio-ui/export-licenses.html
Using Android SDK: C:\Users\jaspe\AppData\Local\Android\Sdk
当我弄清楚这一点时,我遇到了this answer,它告诉我接受许可证。但是在尝试这样做时,我收到了以下错误:
C:\Users\jaspe\AppData\Local\Android\Sdk\tools\bin>sdkmanager --licenses
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:522)
... 5 more
解决我找到的this post。我不使用 brew,但我尝试了第二个答案。它没有用,很遗憾。然后我发现我没有安装JDK,所以我这样做了。但是安装了最新的 JDK 后,我仍然遇到异常:
C:\Users\jaspe\AppData\Local\Android\Sdk\tools\bin>sdkmanager.bat -licenses
Error occurred during initialization of boot layer
java.lang.module.FindException: Module java.xml.bind not found
现在我不知道该做什么了。我发现an answer 解释说我需要编辑我的项目设置,但我认为这不适用于我的项目,老实说我有点过头了。有人遇到过这些错误,可以帮我解决吗?我花了整个上午的时间试图弄清楚这一点,我希望构建一个可运行的 .APK 作为演示会更容易......
【问题讨论】:
您是否将 JAVA_HOME 添加到 PATH 中? 哦,是的,我做到了。忘记加了。 JAVA_HOME: C:\Program Files\Android\Android Studio\jre 那是jre的路径。 JAVA_HOME 应该指向 JDK。 【参考方案1】:您使用了错误的sdkmanager
,tools
目录已被弃用
打开Android Studio
并安装最新的command-line
工具:
这将在您的 Android SDK 中创建此文件夹:
...\Android\Sdk\cmdline-tools\latest\bin
现在使用 bin 目录中的 sdkmanager
接受所有许可证:
C:\Users\jaspe\AppData\Local\Android\Sdk\cmdline-tools\latest\bin>sdkmanager.bat --licenses
【讨论】:
如何通过CLI完成? 找到了,sdkmanager工具已经从/tools/bin
移到/cmdline-tools/latest/bin
以上是关于接受 SDK 许可时出现“java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema”的主要内容,如果未能解决你的问题,请参考以下文章
不接受软件包 Android SDK Platform 23 的许可