Pobrałem i zainstalowałem:
- JDK (
jdk-9.0.1_osx-x64_bin.dmg
) z Oracle tutaj - Android SDK (
sdk-tools-darwin-3859397.zip
) od Google tutaj .
Po skonfigurowaniu PATH
zmiennej spróbowałem uruchomić sdkmanager
, co zastąpiło android
polecenie do zarządzania komponentami SDK. Jednak nie udało się, jak pokazano tutaj:
$ 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
Oto wersja 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)
Czy ktoś wie, jak to naprawić bez wracania do Java 8?
Powiązane pytania
- Nie udało się zainstalować android-sdk
- Ten post zadał podobne pytanie. Jednak post jest zamknięty, a jedyna odpowiedź sugeruje powrót do Java 8.
java
android
android-sdk-tools
java-9
android-sdk-manager
Siu Ching Pong -Asuka Kenji-
źródło
źródło
Odpowiedzi:
Z pomocą tej odpowiedzi pomyślnie rozwiązałem problem.
Zamierzamy zastosować poprawkę w
sdkmanager
. To jest skrypt powłoki. Znajduje się pod adresem$android_sdk/tools/bin
, gdzie$android_sdk
rozpakowałeś pakiet Android SDK.sdkmanager
w swoim ulubionym edytorze.Znajdź wiersz, który ustawia
DEFAULT_JVM_OPTS
zmienną. W moim egzemplarzu jest to wiersz 31:DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"'
Dołączyć następujące opcje do zmiennej:
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
. Proszę zwrócić uwagę na cytaty. W mojej kopii linia wygląda następująco:DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
Oto wynik:
$ 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 ...
Hola! To działa!
- Edycja: 2017-11-07 -
Należy pamiętać, że po uruchomieniu może być konieczne ponowne zastosowanie powyższej poprawki
sdkmanager --update
, ponieważsdkmanager
skrypt powłoki może zostać zastąpiony, jeślitools
pakiet zostanie zaktualizowany.Powiązane odpowiedzi
źródło
--add-modules java.se.ee
należy traktować jako tymczasowe obejście. Propozycja usunięcia modułu java.xml.bind z Java SE i JDK jest w wersji roboczej tutaj: bugs.openjdk.java.net/browse/JDK-8189188JAVA_OPTS
zmienną środowiskowąexport JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
zamiast łatać pliki źródłowe zestawu SDK?set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0.." -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
abycom.android.sdklib.tool.SdkManagerCli
klasa działała poprawnie-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
lub `--add-modules java.xml.bind nie działa z Javą 11 w Mac OS. Jak mogę to naprawić bez instalowania innej wersji Java?Możesz ustawić opcje sdkmanager za pomocą SDKMANAGER_OPTS.
Przykład:
export SDKMANAGER_OPTS="--add-modules java.se.ee" sdkmanager --list
źródło
set SDKMANAGER_OPTS=--add-modules java.se.ee
Zaakceptowana odpowiedź jest nieaktualna w lutym 2019 r. Oto odpowiedź, która będzie działać do czasu
sdkmanager
migracji do nowszej wersji Java. Ale do tego czasu nie będziesz już mieć tego problemu.źródło
set JAVA_HOME="...\android-studio\current\jre"
pomaga mi w systemie Windows 10, podczas gdy wszystkie inne odpowiedzi nieset JAVA_HOME="C:\Program Files\Android\Android Studio\jre"
pracował dla mnie w systemie Windows 10. Znajdź ścieżkę do Android Studio. Ustawiłem Javę 11 na moim oryginalnym JAVA_HOMEW przypadku posiadania języka Java 11 w systemie podane rozwiązania są nieprawidłowe.
To
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee or
--add-modules java.xml.bind nie działa z Javą 11 w systemie Mac OS.Z tego powodu musisz obniżyć wersję Java do wersji 8 stąd: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Wyświetl listę zainstalowanych wersji 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)
Następnie idź do
i
źródło
bash: /usr/libexec/java_home: file not found
na mojej instalacji.W przypadku systemu Windows, jeśli nic nie działa, spróbuj tego:
Otwórz za
sdkmanager.bat
pomocą Notatnika.Znajdź następujący wiersz:
%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS%
Dodaj
--add-modules java.xml.bind
Zmodyfikowana linia powinna wyglądać następująco:
%JAVA_EXE%" %DEFAULT_JVM_OPTS% --add-modules java.xml.bind %JAVA_OPTS% %SDKMANAGER_OPTS%
źródło
Aktualizacja 2019-10:
Jak stwierdzono w narzędziu do śledzenia problemów , Google pracuje nad nową wersją narzędzi SDK, która działa na obecnych maszynach JVM (9+)!
Możesz pobrać i używać nowych narzędzi wiersza poleceń Android SDK (1.0.0) w Android Studio lub ręcznie pobierając je z serwerów Google:
Aby uzyskać najnowsze wersje, sprawdź adresy URL w repository.xml .
Jeśli ręcznie rozpakujesz narzędzia wiersza poleceń, zadbaj o umieszczenie ich w podfolderze wewnątrz swojego
$ANDROID_HOME
(np$ANDROID_HOME/cmdline-tools/...
.).źródło
Jak czytaliśmy w poprzednich komentarzach, ten błąd występuje, ponieważ aktualna wersja SDK jest niekompatybilna z najnowszymi wersjami Java: 9 i 10.
Aby go rozwiązać, możesz obniżyć wersję Java do Java 8 lub jako obejście możesz wyeksportować następującą opcję na terminalu:
Linux:
export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
Okna :
set JAVA_OPTS=-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
To rozwiąże ten błąd dla
sdkmanager
I aby go zapisać na stałe można wyeksportować JAVA_OPTS w pliku profilu na platformie Linux (
.zshrc
,.bashrc
itp) lub dodać jako zmienną środowiskową na stałe w systemie Windows.ps. To nie działa dla Java 11/11 +, która nie ma modułów Java EE. W przypadku tej opcji dobrym pomysłem jest obniżenie wersji Java lub czekanie na aktualizację Fluttera .
Ref: JDK 11: Koniec drogi dla modułów Java EE
źródło
--add-modules java.xml.bind
zamiast--add-modules java.se.ee
Jak niektórzy wspominali wcześniej, może to być prostszy problem polegający na tym, że jedna instalacja Java ma pierwszeństwo przed drugą.
W moim przypadku to java 8 została przyćmiona przez domyślną nowszą java.
Zainstalowałem java 8:
sudo apt-get install openjdk-8-jdk
Następnie zaktualizowałem zainstalowaną Javę, aby była nową domyślną:
Przy czym wybrałem numer identyfikacyjny java 8.
Po wykonaniu tych (dość prostych) kroków mogłem po prostu uruchomić sdkmanager bez błędów.
Mam nadzieję, że to komuś pomoże!
źródło
Narzędzia Android są nadal niekompatybilne z JDK 9 lub 10. Musisz zainstalować JDK 8 lub, jeśli potrzebujesz wielu wersji Javy, upewnij się, że systemowy katalog główny Javy wskazuje na JDK 8.
Więcej szczegółów tutaj: Jak skonfigurować Unity 2017.4 pod kątem systemu Android i unikać błędów kompilacji w systemie OSX?
źródło
Trudno było znaleźć to rozwiązanie, po prostu dodając działający plik 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
źródło
set CLASSPATH=%APP_HOME%\lib\sdklib-25.3.1.jar
Udało mi się rozwiązać ten problem, używając edytowanego pliku sdkmanager.bat, wymuszając użycie języka Java osadzonego w samym Android Studio, które, jak przypuszczam, korzysta z OpenJDK 8. Oto edytowany sdkmanager, którego użyłem:
@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
Tutaj użyłem zmiennej środowiskowej ANDROID_STUDIO_JAVA_HOME, która w rzeczywistości wskazuje na środowisko JRE osadzone w Android Studio, np .: ../android_studio/jre
Ma to również rezerwę do JAVA_HOME, jeśli ANDROID_STUDIO_JAVA_HOME nie jest ustawiona.
źródło
Oto, co zrobiłem w Ubuntu 18.04 (każdy Linux zrobi):
$ 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)
źródło
Krótki dodatek do powyższego dla openJDK 11 z narzędziami Android SDK przed aktualizacją do najnowszej wersji.
Powyższe rozwiązania u mnie nie działają
set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.."
Aby to działało, zainstalowałem jaxb-ri (implementację referencyjną) z repozytorium maven.
Informacje zostały podane https://github.com/javaee/jaxb-v2 i linki do https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-ri/2.3.2/jaxb -ri-2.3.2.zip
Ten plik do pobrania zawiera samodzielną implementację środowiska wykonawczego w folderze mod.
Skopiowałem mod-Folder do $ android_sdk \ tools \ lib \ i dodałem do zmiennej 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;
W końcu wygląda to tak:
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;
Może przegapiłem bibliotekę z powodu pojawienia się drobnych błędów. Ale sdkmanager.bat --update lub --list działa teraz.
źródło
To jest odpowiedź, która sprawi, że to zadziała dla języka Java 11 i nowszych, ponieważ wszystkie interfejsy API JAXB zostały usunięte.
Pobierz Jakarta XML Binding , a konkretnie ten plik zip plik . Potrzebujesz tylko 3 plików w folderze mod, tj. Jakarta.activation.jar, jakarta.xml.bind-api.jar i jakarta.xml.bind-api.jar, a resztę możesz odrzucić.
Przenieś te pliki do folderu APP_HOME / lib. Utworzyłem podfolder jaxb . Tak więc w moim systemie macOS było to: $ HOME / Library / Android / sdk / tools / lib / jaxb
Teraz otwórz sdkmanager za pomocą ulubionego edytora tekstu i pod CLASSPATH = dodaj na początku:
Tak więc wyglądało to tak:
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
I to prawie wszystko powinno rozwiązać problem.
Zrobiłem te kroki, ponieważ
flutter doctor --android-licenses
dawałem mi problemy. I to naprawiło.źródło
Jedynym działającym rozwiązaniem dla mnie jest użycie javy dostarczonej ze studiem Android.
ustaw JAVA_HOME na
/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
w
.bashrc
set JAVA_HOME="/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home"
Jeśli używasz
fish
shella, włóż to~/.config/fish/config.fish
set -gx JAVA_HOME /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
(To jest dla Maca, ale jestem pewien, że powinno działać z Linuksem i Windowsem, ustawiając poprawną ścieżkę)
źródło
JDK 13.0.1, Android SDK 29, Windows 10
Zasadniczo próbowałem wszystkiego, ale najbardziej efektywnym i jedynym rozwiązaniem, które działało, było przejście na wersję JDK 1.8. Nie wiem dlaczego, jest początek 2020 roku i muszę przejść na roczną wersję jdk z najnowszą wersją fluttera. Może problem występuje w wersji dla systemu Windows, ponieważ jdk 13.0.1 działał dla mnie na macOS 10.15.2. Mam nadzieję, że to rozwiązanie działa.
Link do pobrania (JDK 1.8.0): https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
źródło
Zdefiniuj katalogi domowe różnych wersji JDK w swoim .bashrc lub .zshrc:
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8) export JAVA_14_HOME=$(/usr/libexec/java_home -v14)
Przede wszystkim użyj wersji JDK 8. Umieść tę linię na początku
sdkmanager
pliku:Przełącz się z powrotem do wersji JDK 14. Umieść ten wiersz na dole
sdkmanager
pliku:źródło
(WINDOWS)
Jeśli masz już zainstalowane Android Studio, przejdź do
File
>>Project Structure...
>> Lokalizacja SDK.Przejdź do tej lokalizacji +
\cmdline-tools\latest\bin
skopiuj ścieżkę doEnvironment Variables
niż jest OK, aby użyć narzędzia wiersza poleceń.
źródło
https://adoptopenjdk.net obsługuje obecnie wszystkie dystrybucje JDK począwszy od wersji 8. Na przykład https://adoptopenjdk.net/releases.html#x64_win
Oto przykład, jak mogłem używać JDK w wersji 8 z sdkmanager i wiele więcej: https://travis-ci.com/mmcc007/screenshots/builds/109365628
W przypadku JDK 9 (i myślę, że 10 i prawdopodobnie 11, ale nie 12 i więcej), następujące czynności powinny działać, aby sdkmanager działał:
export SDKMANAGER_OPTS="--add-modules java.se.ee" sdkmanager --list
źródło
Innym możliwym rozwiązaniem tego błędu jest sprawdzenie wersji Javy, może uda się to rozwiązać pobierając ten jdk oracle-jdk-8 , to był mój błąd: P
źródło
Wystarczy zainstalować pliki jaxb har i dołączyć do ścieżki klas. działa to w Javie od 11 do 12 najpóźniej.
Tym, którzy szukają rozwiązania, przedstawiłem pewne streszczenie na githubie, mam nadzieję, że to pomoże. a linki są również podane.
https://gist.github.com/Try-Parser/b7106d941cc9b1c9e7b4c7443a7c3540
źródło
Pobieram Java 8 SDK
cmd-> flutter doctor --install -licenses
i poflutter 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
źródło
Najwyraźniej jeśli używasz "commandlinetools" w wersji wyższej niż 3.6.0, możesz użyć JDK11 + do zainstalowania komponentów Android SDK.
Dostępne są tutaj: https://developer.android.com/studio#command-tools
Oficjalny program do śledzenia problemów mówiący, że został naprawiony: https://issuetracker.google.com/issues/122210344#comment11
źródło
To bardzo proste, po prostu wyeksportuj
JAVA_HOME
zmienną środowiskową, ustaw na ścieżkę swojej instalacji JDK.Javę zainstalowałem ręcznie na Ubuntu, więc dla mnie wygląda to tak:
export JAVA_HOME="$HOME/pkg-src/jdk1.8.0_251"
I upewnij się, że istnieje również na twojej drodze ...
export PATH="$PATH:$JAVA_HOME"
źródło