代码之家  ›  专栏  ›  技术社区  ›  Aero Wang

Android SDK管理器引发Java 9异常[重复]

  •  26
  • Aero Wang  · 技术社区  · 7 年前

    使用 sdk-tools-darwin-4333796 (26.1.1) 运行时使用Java 9 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(BuiltinClassLoader.java:582)
            at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
            at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
            ... 5 more
    
    1 回复  |  直到 7 年前
        1
  •  33
  •   dsh Euxitheos    4 年前

    编辑 sdkmanager 文件,查找 DEFAULT_JVM_OPTS 并添加 --add-modules java.xml.bind 对它的争论。

    例如,如果你的 sdkmanager

    DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"'
    

    将其更改为

    DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" --add-modules java.xml.bind'
    

    使现代化 :以上适用于Java 9和10。这个 java.xml.bind 模块已在Java 11中删除,将找不到。
    https://www.oracle.com/java/technologies/javase/jdk-11-relnote.html#JDK-8190378


    :显然有两种版本的 ,一个不推荐使用的版本需要Java8,另一个新版本可以使用Java11。看见 this answer on StackOverflow