Pocket

Ubuntu 18.04を新規インストールしてから、Android studioをsnapでインストールし、Android SDKは既定の ~/Android/Sdk/ にインストールしました。

ターミナルでsdkmanagerを起動すると、NoClassDefFoundErrorで起動しません。avdmanagerも同様です。

$ sdkmanager --version
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

解決方法

Ubuntu 18.04標準のjava 11ではなく、Android Studio同梱のjava 1.8を参照するようにします。

Android studioのインストール先に合わせて、読み替えて下さい。次の例は、snapでインストールした場合です。

# ~/.bashrc

export JAVA_HOME=/snap/android-studio/current/android-studio/jre
export PATH=$JAVA_HOME/bin:$PATH

.bashrcを適用します。再ログインするか、または、

$ . ~/.bashrc

無事、sdkmanagerが起動しました。

$ sdkmanager --version
26.1.1