"java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema" 在接受 SDK 许可证时出现

9 浏览
0 Comments

"java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema" 在接受 SDK 许可证时出现

好的,所以我正在尝试使用Android Studio构建我的React-Native应用程序。当我构建时,首先遇到了以下错误:

无法安装以下Android SDK软件包,因为某些许可证尚未被接受。
   build-tools;29.0.2 Android SDK Build-Tools 29.0.2
要构建此项目,请接受SDK许可协议,并使用Android Studio SDK Manager安装缺少的组件。
或者,要将许可协议从一个工作站转移到另一个工作站,请参阅http://d.android.com/r/studio-ui/export-licenses.html
使用的Android SDK:C:\Users\jaspe\AppData\Local\Android\Sdk

在解决这个问题时,我发现了这个答案,告诉我要接受许可证。然而,在尝试这样做时,我遇到了以下错误:

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.(SchemaModule.java:156)
        at com.android.repository.api.SchemaModule.(SchemaModule.java:75)
        at com.android.sdklib.repository.AndroidSdkHandler.(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

为了解决这个问题,我发现了这篇帖子。我没有使用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

现在我不确定该怎么做了。我找到了一个回答解释说我需要编辑我的项目设置,但我认为这不适用于我的项目,老实说我有点困惑。有没有人遇到过这些错误,并可以帮助我解决它们?我整个早上都在试图解决这个问题,我本以为构建一个可运行的.APK作为演示会更容易...

0
0 Comments

问题原因:在执行AndroidSetup.bat脚本时,脚本尝试调用错误位置的sdkmanager.bat文件。

解决方法:编辑AndroidSetup.bat文件(第61行),将路径更正为正确的位置。

当我尝试设置Unreal Engine v4.25.4时,遇到了一个错误。我需要运行Unreal Engine附带的一个批处理脚本,位于以下位置:

C:\Program Files\Epic Games\UE_4.25\Engine\Extras\Android\SetupAndroid.bat

然而,执行脚本时出现了以下错误:

Android Studio Path: C:\Program Files\Android\Android Studio
Android Studio SDK Path: C:\Users\brianb\AppData\Local\Android\Sdk
Using sdkmanager: C:\Users\brianb\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.(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
Update failed. Please check the Android Studio install.
Press any key to continue . . .

即使我根据MatPag的答案找到了sdkmanager.bat文件并执行了它,我的AndroidSetup.bat脚本仍然失败。

最终,我意识到AndroidSetup.bat脚本尝试从错误的位置调用sdkmanager.bat。

为了修正路径,我编辑了AndroidSetup.bat文件(第61行)如下:

:: set SDKMANAGER=%STUDIO_SDK_PATH%\tools\bin\sdkmanager.bat
set SDKMANAGER=%STUDIO_SDK_PATH%\cmdline-tools\latest\bin\sdkmanager.bat

这样一来,问题得到了解决。

0
0 Comments

出现问题的原因是使用了错误的sdkmanager,并且tools目录已经被弃用。解决方法是打开Android Studio并安装最新的命令行工具。这将在Android SDK中创建一个名为"...\Android\Sdk\cmdline-tools\latest\bin"的文件夹。然后使用bin目录中的sdkmanager来接受所有许可证。可以通过命令行界面执行以下命令来完成操作:

C:\Users\jaspe\AppData\Local\Android\Sdk\cmdline-tools\latest\bin>sdkmanager.bat --licenses

之前的sdkmanager工具已经从/tools/bin目录移动到/cmdline-tools/latest/bin目录。这是唯一的解决方案。

最后,将cmdline-tools/latest/bin添加到路径中,以便cordova工作正常。

经过这些步骤后,XmlSchema的问题将得到解决。

0