【问题标题】:Fix sdkmanager java.lang.NoClassDefFoundError batchfile [duplicate]修复 sdkmanager java.lang.NoClassDefFoundError 批处理文件 [重复]
【发布时间】:2019-08-21 12:36:31
【问题描述】:

我在尝试运行 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

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

【问题讨论】:

标签: java android batch-file


【解决方案1】:

你可以试试这个解决方案

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

然后找到这一行

  %JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS%

并改成这一行

  %JAVA_EXE%" %DEFAULT_JVM_OPTS% --add-modules java.xml.bind %JAVA_OPTS% %SDKMANAGER_OPTS%

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

【讨论】:

  • 该文件在哪个文件夹中?
  • 抱歉回复晚了,在android SDK folder/tools/bin
  • 注意:使用 --add-modules 应该可以在 Java 10 上运行,但任何 Java 11 或更高版本都不能。见stackoverflow.com/a/43574427/28037
【解决方案2】:

我必须执行以下操作才能在 Windows 10 上修复此错误:

  1. 安装 JDK 8。我安装了 JDK 12,但它似乎不适用于该版本。
  2. 将 Java 添加到我的环境变量 Path

要将 Java 添加到您的环境变量 Path 中,请执行以下操作:

Go to Computer -&gt; Advanced system settings -&gt; Environment variables -&gt; PATH -&gt; and add the path to your local java bin directory. It looks like this: C:\Program Files\Java\jdk-versionyouhave\bin

【讨论】:

    【解决方案3】:

    我遇到了问题,因为 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

    【讨论】:

    • 如果你在运行 JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions' 之后出现“Could not find or load main class java.se.ee”
    • 这个解决方案适用于我在 Ubuntu 20.10 上。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-12-10
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多