我下载并安装了:

oracle的

  • JDK(jdk-9.0.1_osx-x64_bin.dmg)here
  • 来自Google here的Android SDK(sdk-tools-darwin-3859397.zip)。

  • 配置PATH变量后,我尝试运行sdkmanager,它替换了android命令来管理SDK组件。但是,它失败,如下所示:
    $ sdkmanager --list
    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.SdkManagerCli.main(SdkManagerCli.java:117)
        at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:93)
    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
    

    这是Java版本:
    $ java -version
    java version "9.0.1"
    Java(TM) SE Runtime Environment (build 9.0.1+11)
    Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
    

    有谁知道如何解决它而无需回到Java 8?

    相关问题
  • Failed to install android-sdk
  • 这个帖子问了类似的问题。但是,该帖子已关闭,唯一的答案是建议回到Java8。
  • 最佳答案

    this answer的帮助下,我成功地解决了该问题。

    我们将在sdkmanager中应用修复程序。这是一个shell脚本。它位于$android_sdk/tools/bin,其中$android_sdk是您解压缩Android SDK的位置。

  • 在您喜欢的编辑器中打开sdkmanager
  • 找到设置DEFAULT_JVM_OPTS变量的行。在我的副本中,它位于第31行:
    DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"'
    
  • 将以下选项附加到变量:-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee请注意引号。 在我的副本中,该行变为:
    DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
    
  • 保存文件并退出编辑器。
  • 再次运行命令。

  • 结果如下:
    $ sdkmanager --list
    Installed packages:
      Path    | Version | Description              | Location
      ------- | ------- | -------                  | -------
      tools   | 26.0.1  | Android SDK Tools 26.0.1 | tools/
    
    Available Packages:
      Path                              | Version      | Description
      -------                           | -------      | -------
      add-ons;addon-g..._apis-google-15 | 3            | Google APIs
      add-ons;addon-g..._apis-google-16 | 4            | Google APIs
      add-ons;addon-g..._apis-google-17 | 4            | Google APIs
      add-ons;addon-g..._apis-google-18 | 4            | Google APIs
      add-ons;addon-g..._apis-google-19 | 20           | Google APIs
      add-ons;addon-g..._apis-google-21 | 1            | Google APIs
      add-ons;addon-g..._apis-google-22 | 1            | Google APIs
      add-ons;addon-g..._apis-google-23 | 1            | Google APIs
      add-ons;addon-g..._apis-google-24 | 1            | Google APIs
    ...
    

    你好!有用!

    -编辑:2017-11-07-

    请注意,您可能需要在运行sdkmanager --update之后再次应用上述修复程序,因为如果sdkmanager软件包已更新,则tools shell脚本可能会被覆盖。

    相关答案
  • https://stackoverflow.com/a/43574427/142239
  • @ andy-guibert指出了实现此工作的必要选项。他还简要介绍了这些神秘选择的含义。
  • 07-27 20:57