修复 sdkmanager java.lang.NoClassDefFoundError 批处理文件

D. *_*lai 10 java android batch-file

我在尝试运行时出错 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(Unknown Source)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
        ... 5 more
Run Code Online (Sandbox Code Playgroud)

当我尝试更改为 Java 7、8 和 10 时,我该如何解决这个问题,但都没有奏效。

小智 7

我遇到了这个问题,因为 java 的默认安装是 v11

java -version
应该 : openjdk version "1.8.0_252"

修复:
sudo apt-get install openjdk-8-jdk
不用担心不会覆盖
然后通过切换到正确的版本
sudo update-alternatives --config java

确认正确的输出 java -version

sdkmanager再次运行。


Ami*_*ine 5

你可以试试这个解决方案

首先sdkmanager.bat用任何文本编辑器打开

然后找到这一行

  %JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS%
Run Code Online (Sandbox Code Playgroud)

并将其更改为这一行

  %JAVA_EXE%" %DEFAULT_JVM_OPTS% --add-modules java.xml.bind %JAVA_OPTS% %SDKMANAGER_OPTS%
Run Code Online (Sandbox Code Playgroud)

我希望这能解决你的问题。

  • 注意:使用 `--add-modules` 应该适用于 Java 10,但任何 Java 11 或更高版本都不会。请参阅/sf/answers/3050209921/ (3认同)