avdmanager выдает исключение при попытке запустить его из bash

У меня Ubuntu 16.04 и пытается запустить avdmanager в качестве таких:

cd ~/Android/Sdk/tools/bin/ а потом sudo ./avdmanager list avd

Я получаю ошибку:

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.AvdManagerCli.run(AvdManagerCli.java:213)
    at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:200)
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

Я могу запустить эмулятор через Android-студии, но я хочу сделать это из командной строки.

Я также использую Java 9:

java 9.0.4
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)

Я где-то читал на github, что это может быть потому, что я использую Java 9 и вместо этого должен использовать Java 8 (как я могу понизить)?

Как еще я могу решить это? Спасибо!

4 ответа

Решение

Я получил это на работу! Я просто понизил Java. Ссылаясь на эту ветку: https://github.com/meteor/meteor/issues/9510 которая ссылается на: https://stackoverflow.com/questions/43574426/how-to-resolve-java-lang-noclassdeffounderror-javax-xml-bind-jaxbexception-in-j/43574427

Вам нужно использовать OpenJDK 8

Удалите всю предыдущую версию JDK:

sudo apt-get autoremove openjdk*

Затем установите JDK 8:

sudo apt-get install openjdk-8-jdk

В Android Studio вы можете использовать cmd + ; для Mac или Ctrl + Alt + Shift + S для Windows/Linux, чтобы открыть диалоговое окно Project Structure. Там вы можете установить местоположение JDK, а также местоположение Android SDK.

Добавьте это в конфигурацию.bashrc или.zshrc, чтобы переменная JAVA_HOME указывала на версию Java, используемую Android.

Обратите внимание, что пакет cmdline-tools от Google содержит замещающую версию avdmanager, которая отлично работает под Java 9 и выше. Инструменты cmdline должны быть установлены в ~/Android/Sdk/cmdline-tools/latest. Вместо этого используйте avdmanager из этого пути.

Другие вопросы по тегам