Не удалось установить android-sdk: "java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema"

При установке инструментов Android SDK появляется следующая ошибка:

java.lang.NoClassDefFoundError: javax / xml / bind / annotation / XmlSchema

Почему это происходит и как это можно исправить?

Отладочный вывод:

$ java --version
java 9
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
$ brew cask install android-sdk
==> Caveats
We will install android-sdk-tools, platform-tools, and build-tools for you.
You can control android sdk packages via the sdkmanager command.
You may want to add to your profile:
  'export ANDROID_SDK_ROOT=/usr/local/share/android-sdk'

This operation may take up to 10 minutes depending on your internet connection.
Please, be patient.

==> Satisfying dependencies
==> Downloading https://dl.google.com/android/repository/sdk-tools-darwin-3859397.zip
Already downloaded: /Users/tomasnovella/Library/Caches/Homebrew/Cask/android-sdk--3859397,26.0.1.zip
==> Verifying checksum for Cask android-sdk
==> Installing Cask android-sdk
==> 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
Error: Command failed to execute!

==> Failed command:
/usr/local/Caskroom/android-sdk/3859397,26.0.1/tools/bin/sdkmanager tools platform-tools build-tools;26.0.1

==> Standard Output of failed command:


==> Standard Error of failed command:
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)

40 ответов

Решение

Сегодня утром у меня была похожая проблема (пытался собрать для Android с помощью Unity3D). В итоге я удалил JDK9 и установил Java SE Development Kit 8u144. Надеюсь это поможет.

  1. brew cask uninstall java # uninstall java9
  2. brew tap caskroom/versions
  3. brew cask install java8 # установить java8
  4. touch ~/.android/repositories.cfg # без этого файла ошибка произойдет на следующем шаге
  5. brew cask install android-sdk

Только что была эта ошибка, решенная путем загрузки Android SDK Command-line Tools (latest) в Android Studio под settings > Appearance & Behavior > System Settings > Android SDK > SDK Tools и перезапуск flutter doctor --android-licenses

  • У меня тоже была эта ошибка
      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:190)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
        ... 5 more
  • затем вместо удаления последней среды Java (в моем случае это Java 13)
  • и установка java 8,
  • Я сделал следующие шаги
  • open the android studio > go to configure > select sdk manager > go to sdk tools > make a tick on android sdk command line tools >apply > and wait for installation

  • перезапустите инструмент командной строки

  • введите команду flutter doctor

  • введите команду flutter doctor --android-licenses

  • и примите все лицензии, набрав y

Чтобы устранить эту ошибку, вы можете понизить версию Java.

Или экспортирует следующую опцию на вашем терминале:

Linux / MAC:

export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

Windows:

set JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

И чтобы сохранить его навсегда, вы можете экспортировать JAVA_OPTS в вашем профиле на linux (.zshrc, .bashrc и т. д.) или добавить в качестве среды навсегда в Windows.

set JAVA_OPTS=-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee

Это исправило проблему в Windows для меня.

Источник 1, источник 2

Обновление 2019-10:

Как указано в системе отслеживания проблем, Google работает над новым выпуском инструментов командной строки Android SDK, который работает на текущих JVM (9, 10, 11+) и не зависит от устаревших модулей JAXB EE!

Вы можете загрузить и использовать новые инструменты командной строки Android SDK внутри Android Studio или вручную загрузив их с серверов Google:

Для последних версий проверьте URL-адреса в repository.xml.

Если вы вручную распаковываете инструменты командной строки, позаботьтесь о том, чтобы поместить их во вложенную папку внутри вашего $ANDROID_HOME (например $ANDROID_HOME/cmdline-tools/...).

Если вы не хотите менять свою версию Java (я не хочу). Вы можете временно изменить версию в вашей оболочке:

первый забег

/usr/libexec/java_home -V

затем выберите основную версию, если она установлена, иначе сначала установите ее:

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

Теперь вы можете запустить sdkmanager

Просто установите JDK версии 8 и выберите его по умолчанию, используя:

sudo update-alternatives --config java

На Mac/Linux используйте:
export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

Работает как для JDK 9, так и для 10, без каких-либо исправлений для скрипта (sdkmanager, avdmanager)

Вам необходимо добавить следующее в свой профиль (работает на MacOS):

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

Не нужно ничего исправлять.

Я использовал macOS, и при создании приложения флаттера произошла ошибка, в которой говорилось, что лицензии Android SDK не принимаются. Итак, при принятии лицензии произошла эта ошибка.

Причиной этой ошибки в моем случае было то, что я не установил инструменты командной строки sdkmanager, необходимые для принятия лицензии.

Итак, самый простой способ установить инструменты командной строки:

  1. Откройте андроид-студию.
  2. Откройте диспетчер SDK (см. изображение ниже):
  1. Выберите инструменты SDK внутри него на панели.
  2. Установите флажок Инструменты командной строки Android SDK (последняя версия).
  3. Примените это.
  4. Запустите flutter doctor -android-licenses, если используете флаттер, или вы можете продолжить процесс, в котором произошла ошибка.

Я нашел два ответа, которые работали для меня, без необходимости удалять JDK 10 (или 9), который мне нужен для create-react-app, JDK 9 и 10 несовместимы с Android-SDK!


Сиу Чинг Понг - Асука Кэндзи - предлагает изменить sdkmanager скрипт, заменяющий эту строку:

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

с:

DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

Обратите внимание, что этот мод будет перезаписан при обновлении sdkmanager.
Проверьте его пост, и тот, на который он ссылается, для более подробной информации.
Это решение также было одним из решений, упомянутых в этой теме о проблемах github.


Пост Германии указывает источник конфликта и представляет исправление, которое не будет перезаписано обновлениями.
Он предлагает переименовать /Library/Java/JavaVirtualMachines/Info.plist как средство скрытия его от сценария, который ищет самую высокую версию Java, которая находится в вашей системе. Таким образом, JDK 8 возвращается по умолчанию.
Обращаясь к JDK 10 явно, или установив его в $JAVA_HOMEВы можете использовать JDK 10 вместо значения по умолчанию, когда это необходимо.
Подробности в его посте.

Странно, но Java9 не совместима с Android-SDK

$ avdmanager
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

Объедините все команды в одну для удобства пользования:

$ sudo rm -fr /Library/Java/JavaVirtualMachines/jdk-9*.jdk/
$ sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
$ sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefPane

$ /usr/libexec/java_home -V
Unable to find any JVMs matching version "(null)".
Matching Java Virtual Machines (0):
Default Java Virtual Machines (0):
No Java runtime present, try --request to install

$ brew tap caskroom/versions
$ brew cask install java8
$ touch ~/.android/repositories.cfg
$ brew cask install android-sdk
$ echo 'export ANDROID_SDK_ROOT="/usr/local/share/android-sdk"' >> ~/.bash_profile
$ java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
$ avdmanager

Usage:
      avdmanager [global options] [action] [action options]
      Global options:
  -s --silent     : Silent mode, shows errors only.
  -v --verbose    : Verbose mode, shows errors, warnings and all messages.
     --clear-cache: Clear the SDK Manager repository manifest cache.
  -h --help       : Help on a specific command.

Valid actions are composed of a verb and an optional direct object:
-   list              : Lists existing targets or virtual devices.
-   list avd          : Lists existing Android Virtual Devices.
-   list target       : Lists existing targets.
-   list device       : Lists existing devices.
- create avd          : Creates a new Android Virtual Device.
-   move avd          : Moves or renames an Android Virtual Device.
- delete avd          : Deletes an Android Virtual Device.

Я столкнулся с той же проблемой. Хотя я немного отсталый разработчик (все еще использую окна для разработки:P)

Чтобы решить эту проблему в Windows:

ШАГ 1: Установите jdk 8, если он не был установлен (jdk 9 или 11 не работают, но вы можете установить их для использования в других приложениях).

Очень просто использовать Chocolatey:

choco установить jdk8

(Если установлено с использованием Chocolatey, пропустите шаги 2 и 3)

ШАГ 2: Перейдите в настройки переменных среды и установите JAVA_HOME в каталог установки jdk 8.

ШАГ 3: Перейдите к переменной пути и добавьте каталог bin jdk 8 и переместите его наверх.

ШАГ 4. Закройте все открытые сеансы терминала и перезапустите новый сеанс.

ДОПОЛНИТЕЛЬНЫЙ ШАГ 5: В зависимости от вашей цели при запуске терминала (может потребоваться добавить sdkmanager в путь или просто перейти в каталог):

sdkmanager --update

Вот и все!:O Приятного трепета!:D

Столкнулся с той же проблемой при запуске

$ /Users// Библиотека /Android/sdk/tools/bin/sdkmanager "платформы;android-28" "build-tools;28.0.3"

Решил это как $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home

$ ls / Библиотека / Java / JavaVirtualMachines /

JDK-11.0.1.jdk
jdk1.8.0_202.jdk

Измените Java для использования 1.8

$ export JAVA_HOME = '/ Библиотека /Java/JavaVirtualMachines/jdk1.8.0_202.jdk/ Содержание / Главная'

Затем та же команда работает нормально $ /Users//Library/Android/sdk/tools/bin/sdkmanager "платформы;android-28" "build-tools;28.0.3"

Поскольку Java 11 удалила JavaEE, вам нужно скачать несколько jar-файлов и добавить в путь к классам:

JAXB: https://javaee.github.io/jaxb-v2/

JAF: https://www.oracle.com/technetwork/articles/java/index-135046.html

Затем отредактируйте sdkmanager.bat так, чтобы настройка CLASSPATH=... заканчивалась на ;%CLASSPATH%

Установите CLASSPATH, чтобы включить JAXB и JAF:

set CLASSPATH=jaxb-core.jar;jaxb-impl.jar;jaxb-api.jar;activation.jar

Тогда sdkmanager.bat будет работать.

В моем случае мне нужен как JDK 8 (пытаюсь использовать диспетчер AVD и SDK в Qt под ubuntu), так и 11 для разных инструментов. Удаление версии 11 не вариант.

Решения "JAVA_OPTS" ничего не сделали. Мне не очень нравится экспорт JAVA_HOME, поскольку он может заставить вас запускать любой инструмент, вызывающий эти утилиты из той же оболочки (например, Qt), или заставить вас сделать это постоянным, что неудобно.

Так что для меня решение довольно простое. Добавьте что-то вроде этого во вторую строку ~/Android/tools/bin/sdkmanager и ~ / Android / tools / bin / avdmanager:

JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"

(или любой другой путь к вашему jdk версии 8).

При этом эти инструменты командной строки работают в автономном режиме, они также работают при вызове другими инструментами, такими как Qt, а jdk 11 по-прежнему является системным по умолчанию для других. Не нужно смешивать библиотеки и т. Д.

Единственным недостатком является то, что любое обновление этих инструментов командной строки удалит эти изменения, которые вам придется вставить обратно.

Начиная с последней версии инструментов командной строки Android (2.1 на момент написания этой статьи), больше нет необходимости ни исправлять sdkmanager, ни переходить на более раннюю версию Java.

Просто обновите свои пакеты SDK и переключите инструменты командной строки на latest release, который будет отслеживать новые версии по мере их поступления:

sdkmanager --update
sdkmanager 'cmdline-tools;latest'
sdkmanager --uninstall 'cmdline-tools;1.0'

Возможно, вам потребуется указать полный путь к sdkmanager если это не на твоем PATH, и вам может потребоваться настроить PATH впоследствии, если речь шла о 1.0 инструменты явно.

В моем случае у меня Java 14, и мне нужна Java 8.

Я использую Arch Linux и установил jdk8-openjdk jre8-openjdk https://www.archlinux.org/packages/extra/x86_64/java8-openjdk/

Для пользователей Debian https://wiki.debian.org/Java или Fedora https://docs.fedoraproject.org/en-US/quick-docs/installing-java/.

Установите Java 8 (или желаемую версию, в данном случае jdk8-openjdk jre8-openjdk) с помощью диспетчера пакетов перед выполнением следующих шагов.


1. Выясняю, где находится моя Java:

# which java
/usr/bin/java

2. Проверка файлов java:

Я вижу все файлы Java, здесь ссылки на /usr/lib/jvm/default[something]. Это означает, чтоjava команда связана с определенной версией java исполняемый файл.

# ls -l /usr/bin/java*
lrwxrwxrwx 1 root root 37 May 16 06:30 /usr/bin/java -> /usr/lib/jvm/default-runtime/bin/java
lrwxrwxrwx 1 root root 30 May 16 06:30 /usr/bin/javac -> /usr/lib/jvm/default/bin/javac
lrwxrwxrwx 1 root root 32 May 16 06:30 /usr/bin/javadoc -> /usr/lib/jvm/default/bin/javadoc
lrwxrwxrwx 1 root root 30 May 16 06:30 /usr/bin/javah -> /usr/lib/jvm/default/bin/javah
lrwxrwxrwx 1 root root 30 May 16 06:30 /usr/bin/javap -> /usr/lib/jvm/default/bin/javap

3. Проверка default а также default-runtime

Здесь я мог видеть, что версия по умолчанию связана с 14 (уникальная установленная версия).

# cd /usr/lib/jvm
# ls -l
lrwxrwxrwx 1 root root   14 Aug  8 20:44 default -> java-14-openjdk
lrwxrwxrwx 1 root root   14 Aug  8 20:44 default-runtime -> java-14-openjdk
drwxr-xr-x 7 root root 4096 Jul 19 22:38 java-14-openjdk
drwxr-xr-x 6 root root 4096 Aug  8 20:42 java-8-openjdk

4. Смена версии по умолчанию

Сначала удалите существующий default а также default-runtime который связан с версией java-14.

# rm default default-runtime

Затем создайте новые ссылки на желаемую версию (в данном случае java-8).

# link -s java-8-openjdk default
# link -s java-8-openjdk default-runtime

Стратегия состоит в том, чтобы сделать ссылки на желаемую версию программного обеспечения (в данном случае java8), используя ln -sнад. Затем эти ссылки связаны с двоичными файлами внутри каталога javabin (без изменения$PATHпеременная окружения!)


Или вам может потребоваться изменить версию Java, используя archlinux-javaвместо этого с более безопасным подходом: https://wiki.archlinux.org/index.php/Java

Для пользователей Windows , которые ищут решение

Option 1 Установите cmdline-tools из диспетчера Android Studio SDK.


Option 2 Скачать по этой ссылке https://developer.android.com/studio#cmdline-tools

Затем следуйте приведенному ниже руководству по настройке https://www.youtube.com/watch?v=wvi03sOBKWQ .


Затем скопируйте путь туда, где были установлены cmdline-tools, в папку bin .

Использование диспетчера Android Studio SDK.
cmdline-tools устанавливается в Android SDK
Пример расположения:
C:\Users\%username%\AppData\Local\Android\Sdk\cmdline-tools\latest\bin


Затем вставьте путь в путь к переменной среды.

Control Panel> Установите для просмотра значение > Large Icons>SystemВ разделе « Связанные настройки » справа выберите Advanced System Settings>Environment Variables

Отсюда вы добавляете путь в системных переменных

Убедитесь, что путь cmdline-tools находится над путем к инструментам ( выделен на картинке красным прямоугольником ), если они существуют.

Выберите путь>> Editвыберите путь к cmdline-tools ( выделен синим цветом )>Move Up

TL; DR; Попробуйте установить JAVA_HOME, отлично работал у меня на OSX

export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

Чтобы установить JDK 8 ( LTS) из AdoptOpenJDK:

# brew tap adoptopenjdk/openjdk

brew cask install adoptopenjdk/openjdk/adoptopenjdk8

В моем случае на моем компьютере не была установлена ​​требуемая версия sdk.

Поэтому убедитесь, что вы установили версию sdk, указанную в ошибке.

Здесь вы можете проверить и установить через Android Studio.

На этот вопрос есть множество ответов, и все они разные из-за того, что пользователи устанавливают разные наборы инструментов и используют разные версии Java.

Рекомендуемый способ использования инструментария разработки Android или, по крайней мере, тот, который я предлагаю использовать, - следовать тому, что указано в документации Android Studio:

Вы всегда должны обновлять компонент Build Tools, загружая последнюю версию с помощью Android SDK Manager.

Android studio позволяет легко управлять установленными SDK и инструментами сборки, да, для этого требуется немного места на жестком диске, но это сэкономит вам время. Как только вы познакомитесь с тем, как это работает, вы можете думать об установке только инструментов командной строки.

Если нет особой причины использовать старую версию Java, используйте последнюю (стабильную) версию, у вас появятся интересные новые функции, а также скомпилированное приложение выиграет от всех новых оптимизаций.

Свежая установка

  1. Удалите свой локальный Android папка, обычно в домашнем каталоге
  2. Скачать Android studio
  3. После установки откройте Settings, Поиск Android SDK и откройте это
  4. В SDK Platforms выберите целевую версию Android для своего приложения
  5. В SDK Tools вкладка выберите Android SDK Build-Tools, Android SDK Command-line Tools (latest), Android Emulator, Android SDK Platform-Tools
  6. Прежде чем нажимать ОК, убедитесь, что Android SDK Location путь правильный для вас
  7. Нажмите ОК и пусть Android Studio загрузит и установит все

(Необязательно), если вам нужно использовать установленные двоичные файлы из командной строки, обязательно добавьте их папку в переменную PATH. Однако, если вы используете Android studio, это не обязательно.

На моем компьютере установлена ​​Java 14, в любом случае вы можете использовать jre, поставляемый с Android Studio.

Для Windows машина удалите JDK, если его больше, чем 1.8.172. Установите JDK 1.8.172

Я столкнулся с той же проблемой в Windows 10 с Java 10. Я удалил Java 10 и установил Java8, он работает нормально для меня сейчас:)

Этот вопрос имеет несколько ответов в зависимости от основной проблемы. Есть также несколько ответов, которые косвенно решают реальную проблему.

Основные проблемы:

  1. Инструменты Android SDK имеют проблемы с последней версией Oracle JDK. Вы можете использовать последнюю версию Open JDK. (Последняя версия OpenJDK поставляется с Android Studio.)

  2. У вас не установлены последние инструменты командной строки Android SDK.

  3. У вас установлены последние инструменты командной строки Android SDK, но вы используете E:\Android\Sdk\tools\bin вместо E:\Android\Sdk\cmdline-tools\latest\bin.

Ниже приведены систематические шаги по выявлению и устранению любой из вышеперечисленных проблем, которые могут у вас возникнуть.

  1. Укажите переменные среды на вашу установку OpenJDK в Android Studio. В зависимости от вашей установки, которая находится здесь: E:\Program Files\Android\Android Studio\jre. Вы должны просмотреть все необходимые переменные, такие как PATH, JAVA_HOME, JAVA_BIN и т. д., и убедиться, что все они указывают на ваш OpenJDK.

Примечание. Вам не нужно удалять/переустанавливать JDK. Это просто, вероятно, исправляет ваши переменные выше как побочный эффект.

  1. Убедитесь, что ваши переменные среды указаны правильно (Windows: echo %JAVA_HOME%, echo %PATH%, где javac и т. д.)

  2. Перейдите в Android-студию. В настройках перейдите к «Внешний вид и поведение»> «Системные настройки»> «Android SDK». Установите «Инструменты командной строки Android SDK».

  3. В оболочке перейдите в E:\Android\Sdk\cmdline-tools\latest\bin и запустите sdkmanager --install "cmdline-tools;latest"

Дополнительные советы по устранению неполадок: у меня также были перепутаны переменные среды Android. Запустите «flutter doctor -v», и вывод поможет вам устранить дополнительные проблемы с конфигурацией среды.

Для пользователей Linux (я использую Debian Distro, Kali) Вот как я решил свой.

Если у вас еще нет jdk-8, вы хотите получить его на сайте оракула

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Я получил jdk-8u191-linux-x64.tar.gz

Шаг 1 - Установка Java Move и распакуйте его в подходящем месте, как это

$ mv jdk-8u191-linux-x64.tar.gz /suitablelocation/
$ tar -xzvf /suitablelocation/jdk-8u191-linux-x64.tar.gz

Вы должны получить разархивированную папку, такую ​​как jdk1.8.0_191. После этого вы можете удалить архив, чтобы сэкономить место

Шаг 2 - Настройка альтернатив местоположению Java по умолчанию

$ update-alternatives --install /usr/bin/java java /suitablelocation/jdk1.8.0_191/bin/java 1
$ update-alternatives --install /usr/bin/javac javac /suitablelocation/jdk1.8.0_191/bin/javac 1

Шаг 3 - Выбор альтернатив по умолчанию

$ update-alternatives --set java /suitablelocation/jdk1.8.0_191/bin/java
$ update-alternatives --set javac /suitablelocation/jdk1.8.0_191/bin/javac

Шаг 4 - Подтверждение версии Java по умолчанию

$ java -version

Заметки

  1. В оригинальной статье здесь: https://forums.kali.org/showthread.php?41-Installing-Java-on-Kali-Linux также был установлен плагин по умолчанию для Mozilla. Я предполагаю, что нам не нужны плагины, так как мы просто пытаемся разработать для Android.
  2. Как и в ответе @ spassvogel, вы также должны поместить файл @ repositories.cfg в каталог ~ /.android, поскольку это необходимо для обновления списков репозитория инструментов.
  3. Для перемещения некоторых вещей могут потребоваться полномочия root. Используйте sudo с умом.
  4. Для использования sdkmanager см. Официальное руководство: https://developer.android.com/studio/command-line/sdkmanager

Нет необходимости удалять другие версии Java, которые уже установлены на вашем компьютере. При необходимости вы можете удобно использовать утилиту update-alternatives, чтобы выбрать среду выполнения Java, которую вы хотите активировать. Он автоматически обновит необходимые символические ссылки.

Вам просто нужно запустить приведенную ниже команду и выбрать версию по вашему выбору. Это все!

sudo update-alternatives --config java

Бежать java -version а также javac -version команды в командной строке, чтобы убедиться, что они исходят из одного и того же JDK (например: версия 1.8.0_181)

Если нет, вы должны изменить PATH переменная, так что она указывает только на один JDK. Если вы не знаете, как это сделать, просто удалите все другие экземпляры Java, кроме Java 8 (Установка и удаление программ в Windows). На сегодняшний день Unity и Android рекомендуют использовать JDK 8.

С Java 8 нет необходимости экспортировать java.se.ee модуль, как показано в некоторых других ответах. Вы также можете удалить любой JAVA_OPTS или другие переменные среды, которые вы установили.

Как указал @steven, установите Java 8 (здесь ссылка для Ubuntu 16.04, 18.04 и 20.04 / 20.10 https://computingforgeeks.com/how-to-install-java-8-on-ubuntu/), а затем установите его как версию Java по умолчанию с помощью этой команды:

sudo update-alternatives --config java

Недавно я решил эту проблему, удалив более новую версию JDK и установив JDK 8. После установки JDK вам нужно указать путь. Затем вам нужно открыть командную строку в "C:\Users\Milan Adhikari\AppData\Local\Android\Sdk\tools" и запустить "sdkmanager --update", который обновит ваш SDK, а затем вам нужно запустить "flutter doctor --android-licenses"в cmd и примите все лицензии.
Теперь ваша проблема должна быть решена.

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