Я скачал и установил:
- JDK (
jdk-9.0.1_osx-x64_bin.dmg
) из Oracle здесь - Android SDK (
sdk-tools-darwin-3859397.zip
) от Google здесь .
После настройки 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?
Связанные вопросы
- Не удалось установить android-sdk
- В этом посте задан аналогичный вопрос. Однако сообщение закрыто, и единственный ответ предлагает вернуться к Java 8.
java
android
android-sdk-tools
java-9
android-sdk-manager
Сиу Чинг Понг -Асука Кенджи-
источник
источник
Ответы:
С помощью этого ответа я успешно решил проблему.
Мы собираемся применить исправление в
sdkmanager
. Это сценарий оболочки. Он находится в том месте$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
обновлении пакета.Связанные ответы
источник
--add-modules java.se.ee
следует рассматривать как временное решение. Предложение удалить модуль java.xml.bind из Java SE и JDK находится в черновой форме здесь: bugs.openjdk.java.net/browse/JDK-8189188JAVA_OPTS
переменную средыexport JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
вместо исправления исходных файлов SDK?set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0.." -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
чтобы получитьcom.android.sdklib.tool.SdkManagerCli
класс для корректной работы-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
или --add-modules java.xml.bind не работают с Java 11 в Mac OS. Как это исправить, не устанавливая другую версию Java?Вы можете установить параметры sdkmanager с помощью SDKMANAGER_OPTS.
Пример:
export SDKMANAGER_OPTS="--add-modules java.se.ee" sdkmanager --list
источник
set SDKMANAGER_OPTS=--add-modules java.se.ee
Принятый ответ устарел по состоянию на февраль 2019 года. Вот ответ, который будет работать до
sdkmanager
перехода на более новую версию Java. Но к тому времени у вас больше не будет этой проблемы.источник
set JAVA_HOME="...\android-studio\current\jre"
помогает мне в Windows 10, в то время как все остальные ответы нетset JAVA_HOME="C:\Program Files\Android\Android Studio\jre"
работал у меня на Windows 10. Узнайте свой путь к Android Studio. Я установил Java 11 на свой оригинальный JAVA_HOMEПри наличии в системе java 11 предоставленные решения недействительны.
Этот
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee or
--add-modules java.xml.bind не работает с Java 11 в Mac OS.По этой причине вам необходимо понизить версию Java до версии 8 отсюда: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Список установленных версий Java
Java 11
export JAVA_HOME=$(/usr/libexec/java_home -v 11)
Java 1.8
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
Затем перейдите в
а также
источник
bash: /usr/libexec/java_home: file not found
при моей установке.Для Windows, если ничего не работает, попробуйте следующее:
Открыть
sdkmanager.bat
с помощью Блокнота.Найдите следующую строку:
%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS%
Добавить
--add-modules java.xml.bind
Измененная строка должна выглядеть так:
%JAVA_EXE%" %DEFAULT_JVM_OPTS% --add-modules java.xml.bind %JAVA_OPTS% %SDKMANAGER_OPTS%
источник
Обновление 2019-10:
Как указано в системе отслеживания проблем , Google работает над новым выпуском инструментов SDK, который работает на текущих JVM (9+)!
Вы можете загрузить и использовать новые инструменты командной строки Android SDK (1.0.0) внутри Android Studio или вручную загрузив их с серверов Google:
Для последних версий проверьте URL-адреса внутри repository.xml .
Если вы вручную распаковываете инструменты командной строки, позаботьтесь о том, чтобы поместить их во вложенную папку внутри вашего
$ANDROID_HOME
(например,$ANDROID_HOME/cmdline-tools/...
).источник
Как мы читали в предыдущих комментариях, эта ошибка возникает из-за того, что текущая версия SDK несовместима с новейшими версиями Java: 9 и 10.
Итак, чтобы решить эту проблему, вы можете понизить свою версию java до Java 8 или, в качестве обходного пути, вы можете экспортировать следующую опцию в свой терминал:
Linux:
export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
Windows :
set JAVA_OPTS=-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
Это решит эту ошибку для
sdkmanager
И сделать это сохраняется , вы можете экспортировать JAVA_OPTS в файле профиля на Linux (
.zshrc
,.bashrc
и т.д.) или добавить в качестве переменной окружения постоянно на Windows.пс. Это не работает для Java 11/11 +, в которой нет модулей Java EE. Для этого варианта - хорошая идея, понизьте версию Java или дождитесь обновления Flutter .
Ссылка: JDK 11: конец пути для модулей Java EE
источник
--add-modules java.xml.bind
вместо--add-modules java.se.ee
Как некоторые люди упоминали ранее, это может быть более простой проблемой, связанной с тем, что одна установка java имеет приоритет над другой.
В моем случае это была java 8, которая затмевала более новую java по умолчанию.
Я установил java 8:
sudo apt-get install openjdk-8-jdk
Затем я обновил установленную java, чтобы она стала новой по умолчанию:
При этом я выбрал идентификационный номер java 8.
После выполнения этих (довольно простых) шагов я мог просто запустить sdkmanager без ошибок.
Надеюсь, это кому-то поможет!
источник
Инструменты Android по-прежнему несовместимы с JDK 9 или 10. Вам необходимо установить JDK 8 или, если вам нужно несколько версий Java, убедитесь, что общесистемная домашняя страница Java указывает на JDK 8.
Подробнее здесь: Как настроить Unity 2017.4 для работы с Android и избежать сбоев сборки на OSX?
источник
Мне было сложно понять это решение, просто добавив рабочий sdkmanager.bat
@if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @rem sdkmanager startup script for Windows @rem @rem ########################################################################## @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME%.. @rem Add default JVM options here. You can also use JAVA_OPTS and SDKMANAGER_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.." @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if "%ERRORLEVEL%" == "0" goto init echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto init echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :init @rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args :win9xME_args @rem Slurp the command line arguments. set CMD_LINE_ARGS= set _SKIP=2 :win9xME_args_slurp if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\lib\sdklib-25.3.1.jar;%APP_HOME%\lib\layoutlib-api-25.3.1.jar;%APP_HOME%\lib\dvlib-25.3.1.jar;%APP_HOME%\lib\repository-25.3.1.jar;%APP_HOME%\lib\gson-2.2.4.jar;%APP_HOME%\lib\commons-compress-1.8.1.jar;%APP_HOME%\lib\httpclient-4.1.1.jar;%APP_HOME%\lib\httpmime-4.1.jar;%APP_HOME%\lib\common-25.3.1.jar;%APP_HOME%\lib\kxml2-2.3.0.jar;%APP_HOME%\lib\annotations-25.3.1.jar;%APP_HOME%\lib\annotations-12.0.jar;%APP_HOME%\lib\jimfs-1.1.jar;%APP_HOME%\lib\httpcore-4.1.jar;%APP_HOME%\lib\commons-logging-1.1.1.jar;%APP_HOME%\lib\commons-codec-1.4.jar;%APP_HOME%\lib\guava-18.0.jar @rem Execute sdkmanager "%JAVA_EXE%" %DEFAULT_JVM_OPTS% -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee %JAVA_OPTS% %SDKMANAGER_OPTS% -classpath "%CLASSPATH%" com.android.sdklib.tool.SdkManagerCli %CMD_LINE_ARGS% :end @rem End local scope for the variables with windows NT shell if "%ERRORLEVEL%"=="0" goto mainEnd :fail rem Set variable SDKMANAGER_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! if not "" == "%SDKMANAGER_EXIT_CONSOLE%" exit 1 exit /b 1 :mainEnd if "%OS%"=="Windows_NT" endlocal :omega
источник
set CLASSPATH=%APP_HOME%\lib\sdklib-25.3.1.jar
Мне удалось решить эту проблему, используя отредактированный файл sdkmanager.bat, заставив использовать Java, встроенную внутри самой Android Studio, которая, как я полагаю, использует OpenJDK 8. Вот отредактированный sdkmanager, который я использовал:
@if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @rem sdkmanager startup script for Windows @rem @rem ########################################################################## @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME%.. @rem Add default JVM options here. You can also use JAVA_OPTS and SDKMANAGER_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.." @rem find Java from Android Studio @rem Find java.exe if defined ANDROID_STUDIO_JAVA_HOME goto findJavaFromAndroidStudioJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if "%ERRORLEVEL%" == "0" goto init goto findJavaNormally :findJavaFromAndroidStudioJavaHome set JAVA_HOME=%ANDROID_STUDIO_JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto init goto findJavaNormally @rem java from java home @rem Find java.exe :findJavaNormally if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if "%ERRORLEVEL%" == "0" goto init goto javaError :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto init goto javaDirectoryError :javaError echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :javaDirectoryError echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :init @rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args :win9xME_args @rem Slurp the command line arguments. set CMD_LINE_ARGS= set _SKIP=2 :win9xME_args_slurp if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\lib\dvlib-26.0.0-dev.jar;%APP_HOME%\lib\jimfs-1.1.jar;%APP_HOME%\lib\jsr305-1.3.9.jar;%APP_HOME%\lib\repository-26.0.0-dev.jar;%APP_HOME%\lib\j2objc-annotations-1.1.jar;%APP_HOME%\lib\layoutlib-api-26.0.0-dev.jar;%APP_HOME%\lib\gson-2.3.jar;%APP_HOME%\lib\httpcore-4.2.5.jar;%APP_HOME%\lib\commons-logging-1.1.1.jar;%APP_HOME%\lib\commons-compress-1.12.jar;%APP_HOME%\lib\annotations-26.0.0-dev.jar;%APP_HOME%\lib\error_prone_annotations-2.0.18.jar;%APP_HOME%\lib\animal-sniffer-annotations-1.14.jar;%APP_HOME%\lib\httpclient-4.2.6.jar;%APP_HOME%\lib\commons-codec-1.6.jar;%APP_HOME%\lib\common-26.0.0-dev.jar;%APP_HOME%\lib\kxml2-2.3.0.jar;%APP_HOME%\lib\httpmime-4.1.jar;%APP_HOME%\lib\annotations-12.0.jar;%APP_HOME%\lib\sdklib-26.0.0-dev.jar;%APP_HOME%\lib\guava-22.0.jar @rem Execute sdkmanager "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS% -classpath "%CLASSPATH%" com.android.sdklib.tool.sdkmanager.SdkManagerCli %CMD_LINE_ARGS% :end @rem End local scope for the variables with windows NT shell if "%ERRORLEVEL%"=="0" goto mainEnd :fail rem Set variable SDKMANAGER_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! if not "" == "%SDKMANAGER_EXIT_CONSOLE%" exit 1 exit /b 1 :mainEnd if "%OS%"=="Windows_NT" endlocal :omega
Здесь я использовал переменную окружения ANDROID_STUDIO_JAVA_HOME, которая фактически указывает на JRE, встроенную в студию Android, например: ../android_studio/jre
Это также имеет запасной вариант для JAVA_HOME, если ANDROID_STUDIO_JAVA_HOME не установлен.
источник
Вот что я сделал в Ubuntu 18.04 (подойдет любой Linux):
$ sudo apt-get install openjdk-8-jdk $ sudo update-alternatives --config java There are 2 choices for the alternative javac (providing /usr/bin/javac). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 1111 auto mode 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 1111 manual mode * 2 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1081 manual mode Press <enter> to keep the current choice[*], or type selection number: 2 $ export JAVA_HOME=$(/usr/lib/jvm/java-1.8.0-openjdk-amd64)
источник
Краткое дополнение к вышесказанному для openJDK 11 с инструментами android sdk перед обновлением до последней версии.
Вышеупомянутые решения не помогли мне
set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.."
Чтобы это заработало, я установил jaxb-ri (эталонная реализация) из репозитория maven.
Информация была предоставлена https://github.com/javaee/jaxb-v2 и ссылки на https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-ri/2.3.2/jaxb -ri-2.3.2.zip
Эта загрузка включает в себя автономную реализацию среды выполнения в папке мода.
Я скопировал папку мода в $ android_sdk \ tools \ lib \ и добавил в переменную classpath следующее:
;% APP_HOME% \ lib \ mod \ jakarta.xml.bind-api.jar;% APP_HOME% \ lib \ mod \ jakarta.activation-api.jar;% APP_HOME% \ lib \ mod \ jaxb-runtime.jar;% APP_HOME% \ lib \ mod \ istack-commons-runtime.jar;
Итак, наконец, это выглядит так:
set CLASSPATH=%APP_HOME%\lib\dvlib-26.0.0-dev.jar;%APP_HOME%\lib\jimfs-1.1.jar;%APP_HOME%\lib\jsr305-1.3.9.jar;%APP_HOME%\lib\repository-26.0.0-dev.jar;%APP_HOME%\lib\j2objc-annotations-1.1.jar;%APP_HOME%\lib\layoutlib-api-26.0.0-dev.jar;%APP_HOME%\lib\gson-2.3.jar;%APP_HOME%\lib\httpcore-4.2.5.jar;%APP_HOME%\lib\commons-logging-1.1.1.jar;%APP_HOME%\lib\commons-compress-1.12.jar;%APP_HOME%\lib\annotations-26.0.0-dev.jar;%APP_HOME%\lib\error_prone_annotations-2.0.18.jar;%APP_HOME%\lib\animal-sniffer-annotations-1.14.jar;%APP_HOME%\lib\httpclient-4.2.6.jar;%APP_HOME%\lib\commons-codec-1.6.jar;%APP_HOME%\lib\common-26.0.0-dev.jar;%APP_HOME%\lib\kxml2-2.3.0.jar;%APP_HOME%\lib\httpmime-4.1.jar;%APP_HOME%\lib\annotations-12.0.jar;%APP_HOME%\lib\sdklib-26.0.0-dev.jar;%APP_HOME%\lib\guava-22.0.jar;%APP_HOME%\lib\mod\jakarta.xml.bind-api.jar;%APP_HOME%\lib\mod\jakarta.activation-api.jar;%APP_HOME%\lib\mod\jaxb-runtime.jar;%APP_HOME%\lib\mod\istack-commons-runtime.jar;
Возможно, я пропустил библиотеку из-за того, что появились незначительные ошибки. Но sdkmanager.bat --update или --list сейчас работает.
источник
Это ответ, чтобы сделать эту работу для Java 11 и выше, поскольку все API-интерфейсы JAXB были удалены.
Загрузите Jakarta XML Binding , в частности этот zip- файл. Вам нужны только 3 файла в папке мода, то есть jakarta.activation.jar, jakarta.xml.bind-api.jar и jakarta.xml.bind-api.jar, а остальные вы можете выбросить.
Переместите эти файлы в папку APP_HOME / lib. Я создал для этого подпапку jaxb . Итак, в моей системе MacOS это было: $ HOME / Library / Android / sdk / tools / lib / jaxb
Теперь откройте sdkmanager с помощью вашего любимого текстового редактора и в разделе CLASSPATH = добавьте следующее в начале:
В итоге получилось так:
CLASSPATH=$APP_HOME/lib/jaxb/jakarta.activation.jar:$APP_HOME/lib/jaxb/jakarta.xml.bind-api.jar:$APP_HOME/lib/jaxb/jaxb-impl.jar:$APP_HOME/lib/dvlib-26.0.0-dev.jar:$APP_HOME/lib/jimfs-1.1.jar:$APP_HOME/lib/jsr305-1.3.9.jar:$APP_HOME/lib/repository-26.0.0-dev.jar:$APP_HOME/lib/j2objc-annotations-1.1.jar:$APP_HOME/lib/layoutlib-api-26.0.0-dev.jar:$APP_HOME/lib/gson-2.3.jar:$APP_HOME/lib/httpcore-4.2.5.jar:$APP_HOME/lib/commons-logging-1.1.1.jar:$APP_HOME/lib/commons-compress-1.12.jar:$APP_HOME/lib/annotations-26.0.0-dev.jar:$APP_HOME/lib/error_prone_annotations-2.0.18.jar:$APP_HOME/lib/animal-sniffer-annotations-1.14.jar:$APP_HOME/lib/httpclient-4.2.6.jar:$APP_HOME/lib/commons-codec-1.6.jar:$APP_HOME/lib/common-26.0.0-dev.jar:$APP_HOME/lib/kxml2-2.3.0.jar:$APP_HOME/lib/httpmime-4.1.jar:$APP_HOME/lib/annotations-12.0.jar:$APP_HOME/lib/sdklib-26.0.0-dev.jar:$APP_HOME/lib/guava-22.0.jar
И это в значительной степени должно решить проблему.
Я сделал эти шаги, потому
flutter doctor --android-licenses
что у меня возникли проблемы. И это исправило это.источник
(ОКНА)
Если вы уже установили Android Studio, перейдите в
File
>>Project Structure...
>> Местоположение SDK.Перейти в это место +
\cmdline-tools\latest\bin
скопировать путь вEnvironment Variables
чем нормально использовать инструмент командной строки.
источник
Единственное рабочее решение для меня - использовать java, поставляемый со студией Android.
установите JAVA_HOME на
/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
в
.bashrc
set JAVA_HOME="/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home"
Если вы используете
fish
shel, вставьте это в~/.config/fish/config.fish
set -gx JAVA_HOME /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
(Это для Mac, но я уверен, что он должен работать с Linux и Windows, задав правильный путь)
источник
JDK 13.0.1, Android SDK 29, Windows 10
В основном я пробовал все, но наиболее эффективным и единственным решением, которое сработало для меня, был переход на jdk 1.8. Я не понимаю, почему, это начало 2020 года, и мне нужно перейти на версию jdk, которой исполнилось 1 год, вместо последней версии flutter. Возможно, проблема в версии для Windows, потому что jdk 13.0.1 работал у меня на macOS 10.15.2. Надеюсь, это решение сработает.
Ссылка для скачивания (JDK 1.8.0): https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
источник
Определите домашние каталоги разных версий JDK в вашем .bashrc или .zshrc:
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8) export JAVA_14_HOME=$(/usr/libexec/java_home -v14)
Прежде всего используйте JDK версии 8. Поместите эту строку в начало
sdkmanager
файла:Вернитесь к JDK версии 14. Поместите эту строку в конец
sdkmanager
файла:источник
https://adoptopenjdk.net в настоящее время поддерживает все дистрибутивы JDK, начиная с версии 8 и далее. Например https://adoptopenjdk.net/releases.html#x64_win.
Вот пример того, как я смог использовать JDK версии 8 с sdkmanager и многим другим: https://travis-ci.com/mmcc007/screenshots/builds/109365628
Для JDK 9 (и я думаю, что 10 и, возможно, 11, но не 12 и более), для работы sdkmanager должно работать следующее:
export SDKMANAGER_OPTS="--add-modules java.se.ee" sdkmanager --list
источник
Другое возможное решение этой ошибки - проверить свою версию Java, возможно, вы сможете решить ее, загрузив этот jdk oracle-jdk-8 , это была моя ошибка: P
источник
Вам просто нужно установить файлы jaxb har и включить их в путь к классам. это работает в java с 11 по 12 последнее.
Для тех, кто ищет исправление, я сделал некоторую суть в github, надеюсь, это поможет. и ссылки также предоставляются.
https://gist.github.com/Try-Parser/b7106d941cc9b1c9e7b4c7443a7c3540
источник
Я скачиваю Java 8 SDK
cmd-> flutter doctor --install -licenses
и послеflutter doctor Doctor summary (to see all details, run flutter doctor -v): [√] Flutter (Channel stable, v1.12.13+hotfix.9, on Microsoft Windows [Version 10.0.19041.388], locale en-US) [√] Android toolchain - develop for Android devices (Android SDK version 29.0.3) [√] Android Studio (version 4.0) [√] VS Code (version 1.47.3) [!] Connected device ! No devices available ! Doctor found issues in 1 category display and finish
источник
Очевидно, если вы используете версию commandlinetools выше 3.6.0, вы можете использовать JDK11 + для установки компонентов Android SDK.
Они доступны здесь: https://developer.android.com/studio#command-tools.
Официальный трекер ошибок сообщает, что он исправлен: https://issuetracker.google.com/issues/122210344#comment11
источник
Это очень просто, просто экспортируйте
JAVA_HOME
переменную среды, указав путь к вашей установке JDK.Я установил Java вручную на Ubuntu, поэтому для меня это выглядит так:
export JAVA_HOME="$HOME/pkg-src/jdk1.8.0_251"
И убедитесь, что он тоже присутствует на вашем пути ...
export PATH="$PATH:$JAVA_HOME"
источник