Saya mengunduh dan menginstal:
- JDK (
jdk-9.0.1_osx-x64_bin.dmg
) dari Oracle di sini - Android SDK (
sdk-tools-darwin-3859397.zip
) dari Google di sini .
Setelah mengonfigurasi PATH
variabel, saya mencoba menjalankan sdkmanager
, yang menggantikan android
perintah untuk mengelola komponen SDK. Namun, gagal seperti yang ditunjukkan di sini:
$ 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
Ini adalah versi 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)
Adakah yang tahu cara memperbaikinya tanpa kembali ke Java 8?
Pertanyaan-pertanyaan Terkait
- Gagal memasang android-sdk
- Posting ini menanyakan pertanyaan serupa. Namun, postingan tersebut ditutup dan satu-satunya jawaban menyarankan untuk kembali ke Java 8.
java
android
android-sdk-tools
java-9
android-sdk-manager
Siu Ching Pong -Asuka Kenji-
sumber
sumber
Jawaban:
Dengan bantuan jawaban ini , saya berhasil menyelesaikan masalah.
Kami akan menerapkan perbaikan dalam
sdkmanager
. Ini adalah skrip shell. Itu terletak di$android_sdk/tools/bin
, di$android_sdk
mana Anda membuka ritsleting SDK Android.sdkmanager
di editor favorit Anda.Temukan baris yang menetapkan
DEFAULT_JVM_OPTS
variabel. Dalam salinan saya, ada di baris 31:DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"'
Menambahkan pilihan berikut untuk variabel:
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
. Harap perhatikan kutipannya. Dalam salinan saya, barisnya menjadi:DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
Inilah hasilnya:
$ 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 ...
Halo! Berhasil!
- Edit: 2017-11-07 -
Harap dicatat bahwa Anda mungkin perlu menerapkan perbaikan di atas lagi setelah berjalan
sdkmanager --update
, karenasdkmanager
skrip shell mungkin diganti jikatools
paket diperbarui.Jawaban Terkait
sumber
--add-modules java.se.ee
harus dianggap sebagai solusi sementara. Proposal untuk melepaskan modul java.xml.bind dari Java SE dan JDK ada dalam bentuk draf di sini: bugs.openjdk.java.net/browse/JDK-8189188JAVA_OPTS
variabel lingkungan sajaexport JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
, daripada menambal file sumber SDK?set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0.." -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
untuk mendapatkancom.android.sdklib.tool.SdkManagerCli
kelas untuk berjalan dengan benar-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
atau `--add-modules java.xml.bind tidak bekerja dengan Java 11 di Mac OS. Bagaimana cara memperbaikinya tanpa menginstal versi Java yang lain?Anda dapat menyetel opsi sdkmanager dengan SDKMANAGER_OPTS.
Contoh:
export SDKMANAGER_OPTS="--add-modules java.se.ee" sdkmanager --list
sumber
set SDKMANAGER_OPTS=--add-modules java.se.ee
Jawaban yang diterima sudah tidak berlaku sejak Februari 2019. Berikut adalah jawaban yang akan berfungsi hingga Anda
sdkmanager
bermigrasi ke versi Java yang lebih baru. Tetapi saat itu, Anda tidak akan mengalami masalah ini lagi.sumber
set JAVA_HOME="...\android-studio\current\jre"
membantu saya di Windows 10 sementara semua jawaban lain tidakset JAVA_HOME="C:\Program Files\Android\Android Studio\jre"
bekerja untuk saya di Windows 10. Cari tahu Path Android Studio Anda. Saya telah menyetel Java 11 pada JAVA_HOME asli sayaSaat memiliki java 11 di sistem, solusi yang diberikan tidak valid.
Ini
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee or
--add-modules java.xml.bind tidak bekerja dengan Java 11 di Mac OS.Oleh karena itu, Anda harus menurunkan versi java ke versi 8 dari sini: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Daftar versi Java yang diinstal
Jawa 11
export JAVA_HOME=$(/usr/libexec/java_home -v 11)
Java 1.8
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
Lalu pergi ke
dan
sumber
bash: /usr/libexec/java_home: file not found
di instal saya.Untuk Windows, jika tidak ada yang berhasil, coba ini:
Buka
sdkmanager.bat
dengan Notepad.Temukan baris berikut:
%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS%
Menambahkan
--add-modules java.xml.bind
Baris yang dimodifikasi akan terlihat seperti ini:
%JAVA_EXE%" %DEFAULT_JVM_OPTS% --add-modules java.xml.bind %JAVA_OPTS% %SDKMANAGER_OPTS%
sumber
Perbarui 2019-10:
Seperti yang dinyatakan dalam pelacak masalah , Google telah mengerjakan rilis alat SDK baru yang berjalan pada JVM saat ini (9+)!
Anda dapat mendownload dan menggunakan Android SDK Command-line Tools (1.0.0) baru di dalam Android Studio atau dengan mendownloadnya secara manual dari server Google:
Untuk versi terbaru, periksa URL di dalam repository.xml .
Jika Anda membongkar alat baris perintah secara manual, berhati-hatilah dalam menempatkannya di subfolder di dalam
$ANDROID_HOME
(mis$ANDROID_HOME/cmdline-tools/...
.) Anda.sumber
Seperti yang kita baca di komentar sebelumnya, kesalahan ini terjadi karena versi SDK saat ini tidak kompatibel dengan versi Java terbaru: 9 dan 10.
Jadi, untuk mengatasinya, Anda dapat menurunkan versi java Anda ke Java 8, atau sebagai solusinya, Anda dapat mengekspor opsi berikut di terminal Anda:
Linux:
export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
Windows :
set JAVA_OPTS=-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
Ini akan mengatasi kesalahan ini untuk
sdkmanager
Dan untuk membuatnya disimpan secara permanen, Anda dapat mengekspor JAVA_OPTS di file profil Anda di Linux (
.zshrc
,.bashrc
dan lain-lain) atau menambahkannya sebagai variabel lingkungan secara permanen di Windows.ps. Ini tidak berfungsi untuk Java 11/11 +, yang tidak memiliki modul Java EE. Untuk opsi ini adalah ide yang bagus, turunkan versi Java Anda atau tunggu pembaruan Flutter .
Ref: JDK 11: Ujung jalan untuk modul Java EE
sumber
--add-modules java.xml.bind
alih-alih--add-modules java.se.ee
Seperti yang telah disebutkan beberapa orang sebelumnya, ini sangat baik bisa menjadi masalah yang lebih sederhana yang harus dilakukan dengan satu instalasi java diutamakan daripada yang lain.
Dalam kasus saya, itu adalah java 8 yang dibayangi oleh java default yang lebih baru.
Saya menginstal java 8:
sudo apt-get install openjdk-8-jdk
Kemudian saya memperbarui java yang diinstal menjadi default baru:
Dimana saya memilih nomor id java 8.
Setelah melakukan langkah-langkah (cukup sederhana) ini, saya bisa menjalankan sdkmanager tanpa kesalahan.
Semoga ini bisa membantu seseorang!
sumber
Alat Android masih tidak kompatibel dengan JDK 9 atau 10. Anda perlu menginstal JDK 8 atau, jika Anda memerlukan beberapa versi Java, pastikan bahwa home Java seluruh sistem mengarah ke JDK 8.
Detail selengkapnya ada di sini: Bagaimana cara mengonfigurasi Unity 2017.4 untuk menargetkan Android dan menghindari kegagalan build di OSX?
sumber
Saya mengalami kesulitan mencari tahu solusi ini hanya dengan menambahkan sdkmanager.bat yang berfungsi
@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
sumber
set CLASSPATH=%APP_HOME%\lib\sdklib-25.3.1.jar
Saya dapat menyelesaikan masalah ini dengan menggunakan file sdkmanager.bat yang diedit dengan memaksa untuk menggunakan Java yang tertanam di dalam Android Studio Itu Sendiri, yang saya anggap menggunakan OpenJDK 8. Berikut adalah sdkmanager yang diedit yang saya gunakan:
@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
Di sini saya menggunakan variabel lingkungan ANDROID_STUDIO_JAVA_HOME yang sebenarnya mengarah ke JRE yang tertanam di studio android misalnya: ../android_studio/jre
Ini juga memiliki fallback ke JAVA_HOME jika ANDROID_STUDIO_JAVA_HOME tidak disetel.
sumber
Inilah yang saya lakukan di Ubuntu 18.04 (Semua Linux akan melakukannya):
$ 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)
sumber
Penambahan singkat di atas untuk openJDK 11 dengan alat sdk android sebelum meningkatkan ke versi terbaru.
Solusi di atas tidak berhasil untuk saya
set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.."
Agar ini berfungsi, saya telah menginstal jaxb-ri (implementasi referensi) dari repo maven.
Informasi tersebut diberikan https://github.com/javaee/jaxb-v2 dan tautan ke https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-ri/2.3.2/jaxb -ri-2.3.2.zip
Download ini menyertakan implementasi runtime mandiri di Mod-Folder.
Saya menyalin mod-Folder ke $ android_sdk \ tools \ lib \ dan menambahkan yang berikut ke variabel 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;
Jadi akhirnya terlihat seperti:
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;
Mungkin saya melewatkan lib karena beberapa kesalahan kecil muncul. Tetapi sdkmanager.bat --update atau --list sedang berjalan sekarang.
sumber
Ini adalah jawaban untuk membuat ini berfungsi untuk Java 11 dan yang lebih baru karena seluruh JAXB API telah dihapus.
Download Jakarta XML Binding , khususnya file zip ini . Anda hanya memerlukan 3 file dalam folder mod yaitu jakarta.activation.jar, jakarta.xml.bind-api.jar dan jakarta.xml.bind-api.jar dan Anda dapat membuang sisanya.
Pindahkan file-file ini ke folder APP_HOME / lib. Saya membuat sub folder jaxb di dalamnya untuk ini. Jadi, di sistem macOS saya ini: $ HOME / Library / Android / sdk / tools / lib / jaxb
Sekarang buka sdkmanager menggunakan editor teks favorit Anda dan di bawah CLASSPATH = tambahkan yang berikut ini di awal:
Jadi akhirnya terlihat seperti:
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
Dan itu cukup banyak, seharusnya menyelesaikan masalah.
Saya melakukan langkah-langkah ini karena
flutter doctor --android-licenses
memberi saya masalah. Dan ini memperbaikinya.sumber
Satu-satunya solusi yang berfungsi bagi saya adalah menggunakan java yang dikirimkan dengan studio Android.
setel JAVA_HOME ke
/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
di
.bashrc
set JAVA_HOME="/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home"
Jika Anda menggunakan
fish
rak, masukkan ini~/.config/fish/config.fish
set -gx JAVA_HOME /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
(Ini untuk mac, tapi saya yakin ini harus bekerja dengan linux dan windows dengan mengatur jalur yang benar)
sumber
JDK 13.0.1, Android SDK 29, Windows 10
Pada dasarnya saya mencoba segalanya, tetapi solusi yang paling efektif dan hanya 1 yang berhasil untuk saya adalah menurunkan versi ke jdk 1.8. Saya tidak mengapa, ini adalah awal 2020 dan harus menurunkan versi ke versi jdk berusia 1 tahun terhadap versi flutter terbaru. Mungkin masalahnya ada di versi windows, karena jdk 13.0.1 berfungsi untuk saya di macOS 10.15.2. Semoga solusi ini berhasil.
Tautan Unduhan (JDK 1.8.0): https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
sumber
Tentukan direktori home dari berbagai versi JDK di .bashrc atau .zshrc Anda:
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8) export JAVA_14_HOME=$(/usr/libexec/java_home -v14)
Pertama-tama gunakan JDK versi 8. Letakkan baris ini di bagian atas
sdkmanager
file:Beralih kembali ke JDK versi 14. Letakkan baris ini di bagian bawah
sdkmanager
file:sumber
(JENDELA)
Jika Anda telah menginstal Android Studio, buka
File
>>Project Structure...
>> Lokasi SDK.Pergi ke lokasi itu +
\cmdline-tools\latest\bin
Salin Path keEnvironment Variables
daripada menggunakan alat baris perintah.
sumber
https://adoptopenjdk.net saat ini mendukung semua distribusi JDK dari versi 8 dan seterusnya. Misalnya https://adoptopenjdk.net/releases.html#x64_win
Berikut adalah contoh bagaimana saya dapat menggunakan JDK versi 8 dengan sdkmanager dan banyak lagi: https://travis-ci.com/mmcc007/screenshots/builds/109365628
Untuk JDK 9 (dan saya pikir 10, dan mungkin 11, tetapi tidak 12 dan seterusnya), berikut ini harus bekerja agar sdkmanager berfungsi:
export SDKMANAGER_OPTS="--add-modules java.se.ee" sdkmanager --list
sumber
Solusi lain yang mungkin untuk kesalahan ini adalah memeriksa versi Java Anda, mungkin Anda dapat menyelesaikannya dengan mengunduh jdk oracle-jdk-8 ini, ini adalah kesalahan saya: P
sumber
Anda hanya perlu menginstal file har jaxb dan memasukkannya ke dalam classpath. ini berfungsi di java 11 hingga 12 terbaru.
Bagi mereka yang mencari perbaikan, saya membuat beberapa inti di github berharap bantuan ini. dan tautannya juga disediakan.
https://gist.github.com/Try-Parser/b7106d941cc9b1c9e7b4c7443a7c3540
sumber
Saya mengunduh Java 8 SDK
cmd-> flutter doctor --install -licenses
dan setelahflutter 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
sumber
Rupanya jika Anda menggunakan versi "commandlinetools" yang lebih besar dari 3.6.0 Anda dapat menggunakan JDK11 + untuk memasang komponen Android SDK.
Mereka tersedia di sini: https://developer.android.com/studio#command-tools
Pelacak masalah resmi yang mengatakan sudah diperbaiki: https://issuetracker.google.com/issues/122210344#comment11
sumber
Ini sangat sederhana, cukup ekspor
JAVA_HOME
variabel lingkungan, setel ke jalur instalasi JDK Anda.Saya menginstal Java secara manual di Ubuntu, dan bagi saya ini terlihat seperti:
export JAVA_HOME="$HOME/pkg-src/jdk1.8.0_251"
Dan pastikan itu ada di jalan Anda juga ...
export PATH="$PATH:$JAVA_HOME"
sumber