android-sdkをCLIでインストールする際にハマった

新しければ良いってもんじゃないと改めて思い知らされる

$ ./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:583)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 5 more

そもそもJava自体ちゃんと動作していないように見えた。 この端末にインストールしたJavaはJava11(OpenJDK 11.01) ちなみにbrew cask経由でインストールした。

環境

  • macOS mojave
  • brew cask経由でOpenJDK(11)をインストール
  • android-sdk のzipを公式からダウンロード。 /usr/local/opt/android-sdk/ に配置

Java8で動いた

android-sdk入れる場合って基本はAndroid Studioをインストールと同時に行うパターンが多くてRequirementsとかにパットたどり着けなかったんだけど、Java11ではなく、Java8で入れてみたら難なく動いたって話。

$ brew cask install homebrew/cask-versions/java8
$ export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0)
$ /usr/libexec/java_home
$ java -version
java -version
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)

$ ./sdkmanager 
Warning: File /Users/ryouta/.android/repositories.cfg could not be loaded.
[=======================================] 100% Computing updates...
$ ./sdkmanager --list
Warning: File /Users/ryouta/.android/repositories.cfg could not be loaded.
Installed packages:=====================] 100% Computing updates...
  Path    | Version | Description              | Location
  ------- | ------- | -------                  | -------
  tools   | 26.1.1  | Android SDK Tools 26.1.1 | tools/

Available Packages:
  Path                                                                                     | Version      | Description
  -------                                                                                  | -------      | -------
  add-ons;addon-google_apis-google-15                                                      | 3            | Google APIs
  add-ons;addon-google_apis-google-16                                                      | 4            | Google APIs
  add-ons;addon-google_apis-google-17                                                      | 4            | Google APIs
  add-ons;addon-google_apis-google-18                                                      | 4            | Google APIs
  add-ons;addon-google_apis-google-19                                                      | 20           | Google APIs
  add-ons;addon-google_apis-google-21                                                      | 1            | Google APIs
  add-ons;addon-google_apis-google-22                                                      | 1            | Google APIs
  add-ons;addon-google_apis-google-23                                                      | 1            | Google APIs
  add-ons;addon-google_apis-google-24                                                      | 1            | Google APIs
  add-ons;addon-google_gdk-google-19                                                       | 11           | Glass Development Kit Preview
  build-tools;19.1.0                                                                       | 19.1.0       | Android SDK Build-Tools 19.1
~~~~~略~~~~~

/以上