Cordova: Pemeriksaan persyaratan gagal untuk JDK 1.8 atau lebih tinggi

93

Saya menggunakan Cordova 6.4.0 di OS Windows 7, tetapi saya mendapatkan kesalahan ini setelah saya mencoba membangun versi android:

Deskripsi masalah

Variabel Java Home diatur dengan benar ke jalur JDK, tetapi saya tidak tahu mengapa saya mendapatkan masalah ini. Ada saran, tolong?

MadNeox
sumber
3
Baik. Saya memiliki masalah yang sama, tetapi saya tidak dapat mengunduh versi 1.8 karena tersembunyi di bawah nama lain. Ini adalah 8u152. Setelah beberapa jam saya menemukannya di sini: oracle.com/technetwork/java/javase/downloads/…
user2367101

Jawaban:

58

Hapus semua JDK sebelumnya termasuk 1.8 Instal JDK 1.8

MadNeox
sumber
3
@Urbycoz Anda hanya perlu pergi ke Add or Remove Programs/Program Featuresdalam Windows OS. Selanjutnya, hapus semua versi Java sebelumnya. Saya version 7juga menginstal dan setelah uninstallingitu, cordova run androidbekerja. Semoga berhasil.
Aakash
1
Tapi apa artinya? Bagaimana cordova memilih JDK jika JDK yang berbeda diinstal. Tidak mungkin Anda hanya dapat memiliki satu JDK (mis. Membangun mesin)?
Bruno Ranschaert
Anda masih perlu menyetel variabel lingkungan sehingga Cordova dapat menemukan jalur ke superuser.com/questions/949560/…
Yvonne Aburrow
19
@MadNeox mencopot pemasangan versi lain hanyalah solusi, bukan solusinya
Gandhi
melakukan trik untuk saya. pergi ke appwiz.cpl (dari windows cmd) dan menghapus java 7 dan java sdk 7.
Ortiz
53

Di Linux (Debian / Ubuntu) ini dapat diselesaikan dengan memilih Java 1.8 SDK di

sudo update-alternatives --config javac

Mengubah JAVA_HOMEvariabel env secara langsung tampaknya tidak berpengaruh apa-apa.

EDIT: menanggapi komentar: Ini mungkin ada hubungannya dengan fakta bahwa instalasi Java Debian (dan tampaknya Ubuntu) baru melalui manajer paket tidak menggunakan JAVA_HOMEvariabel lingkungan untuk menentukan lokasi JRE. Lihat ini dan posting ini untuk info lebih lanjut.

oseiskar.dll
sumber
1
Anda membuat hari saya. Saya mencoba semuanya dalam beberapa hari terakhir. Tnx banyak. Tetapi mengapa hanya ini yang berhasil? Mengapa variabel pengaturan tidak berpengaruh?
saya-
1
Bekerja untuk saya juga di Ubuntu ... Saya telah melakukannya untuk javatetapi tidak javac! Sekarang tidak perlu menghapus Java 9 :)
hughjdavey
Ucapan yang sama di sini. Meskipun JAVA_HOMEmenunjuk ke 1,8 JDK kanan, hanya memperbarui sistem default yang memuaskan Cordova.
myoan
1
Saat melakukan sudo update-alternate --config javac Hanya ada satu alternatif di grup tautan javac (menyediakan / usr / bin / javac): / usr / lib / jvm / java-11-openjdk-amd64 / bin / javac Tidak ada yang perlu dikonfigurasi . saya perlu kembali ke java-8-openjdk apakah ada tempat untuk melakukannya?
Taieb
Mengapa ini adalah solusi di ubuntu. Seperti yang dikatakan myoan, mengapa memperbarui sistem default kordova puas?
Jithin
40

Anda tidak perlu mencopot pemasangan versi sdk yang lebih tinggi. install saja jdk1.8.0_161 atau jangan jika sudah install.

Sekarang atur saja JAVA_HOMEvariabel USER (bukan variabel sistem) seperti yang ditunjukkan pada gambar di bawah ini.

masukkan deskripsi gambar di sini

Dengan cara ini Anda tidak perlu mencopot pemasangan versi yang lebih tinggi dan masalah teratasi.

Rashmin Javiya
sumber
9
Ingatlah untuk menutup terminal / IDE sebelum mencoba menjalankan perintah Anda lagi.
Daniel
1
atau Anda bisa menjalankan $. ~ / .bashrc untuk mengekspor variabel env lagi
Nick Cuevas
33

Apa yang berhasil adalah menghapus jdk 9 dan menginstal ulang jkd 8.x.

Di Mac untuk menghapus instalasi, buka terminal dan ikuti langkah-langkah ini:

cd /Library/Java/JavaVirtualMachines

sudo rm -rf jdk-9.0.1.jdk

Kemudian instal jdk 8.x dengan mendownload paket .dmg dari Oracle.

Bandito11
sumber
23

Anda mungkin memiliki versi yang lebih besar dari 8 tetapi Cordova hanya mendukung JDK 1.8. Lihat tautan ini Dokumentasi Cordova

Saya melihat potongan kode yang sebenarnya memeriksa nomor versi java Anda. Cari yang berikut ini: module.exports.check_java di platforms / android / cordova / lib / check_reqs.js . di baris 220. Anda akan melihat regex dan komentar yang ditinggalkan oleh tim bahwa Java 10 akan didukung di masa mendatang.

Ekspresi reguler yang ada akan gagal jika dijalankan terhadap versi terbaru java seperti Java 10. Itu karena Java 8 atau 9 disimpan dalam format berikut: 1. [8-9]. ** tetapi Java 10 disimpan sebagai 10. ** dan ekspresi reguler mencari versi dalam format 1. [8-9]. **

// Let's check for at least Java 8, and keep it future proof so we can support Java 10
var match = /javac ((?:1\.)(?:[8-9]\.)(?:\d+))|((?:1\.)(?:[1-9]\d+\.)(?:\d+))/i.exec(output);

Solusi saya:

Anda tidak perlu menghapus versi JRE atau JDK Anda saat ini karena penginstal menginstal setiap versi di folder tertentu.

1- Instal versi Java 8 Ikuti tautan ini

2- Perbarui variabel lingkungan Anda:

  • JAVA_HOME jika Anda menginstal JDK
  • JRE_HOME jika Anda menginstal JRE

dengan mengarahkan mereka ke lokasi di mana JRE 8 dan JDK 8 dipasang.

// On my machine   
C:\Program Files\Java\jdk1.8.0_171 // JAVA_HOME
C:\Program Files\Java\jre1.8.0_171 // JRE_HOME

Buka sesi terminal baru dan jalankan perintah yang gagal. Ini harus bekerja sekarang.

Tidak bekerja?

Jika gagal karena alasan lain, kemungkinan proses debugging:

  • Pastikan variabel JAVA_HOME dan JRE_HOME adalah variabel Sistem.
  • Pastikan mereka ditambahkan ke User's Path. Tambahkan variabel ke Path
Gloire
sumber
Ini adalah satu-satunya jawaban yang benar untukku. Lihat tautan ini untuk info lebih lanjut evothings.com/doc/build/cordova-install-linux.html
Dara Java
17

Menghapus instalasi JDK versi lama akan berhasil. Tapi itu mungkin solusi yang kurasa. Saya menghadapi masalah yang sama dan memperhatikan bahwa versi baru JDK dan jalur JDK versi lama telah disebutkan di 'path'variabel lingkungan.

Menghapus jalur JDK versi lama dari 'path'variabel lingkungan melakukan trik untuk saya. Semoga bisa membantu seseorang juga.

Gandhi
sumber
jika Anda menyetel variabel lingkungan, Anda mungkin menemukan superuser.com/questions/949560/…
Yvonne Aburrow
Ya saya dapat menjalankan perintah build dengan ini, tetapi masih berjuang dengan perintah run 'ionic cordova run android', menunjukkan kesalahan INSTALL FAILED UPDATE INCOMPATIBLE.
supriya chauhan
@supriyachauhan Anda dapat mencoba menginstal ulang semuanya lagi. Jika tidak, Anda mungkin harus memberikan detail yang terperinci untuk mempersempit masalah
Gandhi
9

Saya menemukan bahwa variabel lingkungan jalur saya mengarah ke java 1.7 sementara JAVA_HOME menunjuk ke 1.8, jadi saya mengedit variabel jalur ke 1.8 dan saya baik-baik saja.

Iyke Perry
sumber
8

dalam kasus saya JAVA_HOME mengarah ke C: \ Program Files (x86) \ Java \ jdk1.7.0_55

ketika saya menulis di mana java di cmd itu keluar C: \ Program Files (x86) \ Java \ jdk1.7.0_55 bersama dengan jalur java.exe, saya telah mengubah variabel JAVA_HOME dari variabel lingkungan ke C: \ Program Files \ Java \ jdk1.8.0_20 & berhasil, jadi sepertinya saya punya 2 instance jdk & cordova membutuhkan v1.8. * one.

Mawardy
sumber
Periksa ke mana tujuan variabel Path Anda. Saya memiliki JAVA_HOME yang menunjuk ke 1.8 tetapi di Path itu menunjuk ke versi yang berbeda. Bekerja dengan baik setelah saya menyelaraskan keduanya!
ahb
6

MAC: Arahkan ke: / Library / Java / JavaVirtualMachines Pastikan Anda hanya memiliki jdk1.8.0_201.jdk Jika Anda memiliki banyak, hapus JDK lainnya

Shelly Pritchard
sumber
5

Saya setuju dengan @Hozington. Ini seharusnya merupakan bug pada kode Cordova untuk mendeteksi versi Java. Yang saya lakukan adalah:

  1. Pertahankan JDK 10
  2. Instal JDK 8
  3. Ubah JAVA_HOMEke jalur JDK 8, dan ubah pathvariabelnya juga.
  4. restart "cmd" dan jalankan cordova buildkembali.

Dan kesalahan itu hilang!

ceeko
sumber
4

jika Anda memiliki banyak versi JDK, Anda dapat menjalankannya

export JAVA_HOME="/usr/local/env/java/jdk1.8.0_131.jdk/Contents/Home/"

sebelum membangun cordova, untuk menggunakan versi jdk tertentu :)

Walterwhites
sumber
3

Guys untuk mendapatkan campuran langsung di Windows , Anda perlu melakukan hal berikut

  1. Unduh dan instal versi JDK 1.8 atau lebih tinggi.
  2. Buka variabel lingkungan, buat variabel lingkungan bernama JAVA_HOME dan setel nilai ke jalur pemasangan JDK. C:\Program Files\Java\jdk1.8.0_162 pastikan Anda tidak menambahkan \binnilai.

masukkan deskripsi gambar di sini

  1. Dalam variabel jalur sistem Anda, beri titik koma ;dan tambahkan nilai ini ke jalur sistem, misalnya C:\Program Files\Java\jdk1.8.0_162\bin;Di sini \binditambahkan.

Catatan: Variabel lingkungan rumit. Mereka seharusnya ditutup oleh a ; sebelum membuka yang lain. Itulah mengapa kami meletakkan satu sebelum menambahkan nilai dan satu setelah nilai untuk menutupnya.

masukkan deskripsi gambar di sini

  1. Sekarang tutup terminal dan buka kembali lalu jalankan perintah sebelumnya.
das kesucian
sumber
ada campuran pengalamatan java ... dari JAVA_HOME, PATH. cordova menggunakan PATH yang mungkin mengarah ke java12 / 13
bortunac
3

Terkadang mengubah jalur dan java-hometidak berhasil. Anda perlu menambahkan

C:\Users\[your user]\AppData\Local\Android\Sdk\platform-tools
C:\Users\[your user]\AppData\Local\Android\Sdk\tools

ke jalur variabel lingkungan juga.

Santosh
sumber
3

Hari ini saya juga mendapat kesalahan ini Cordova : Requirements check failed for JDK 1.8 or greaterdi Mac OS saya saat membangun Aplikasi Ionic ketika saya menjalankan perintah ionic cordova build --release androidmelalui terminal.

Perintah di bawah ini menyelesaikan masalah saya: -

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home"

Semoga ini akan membantu seseorang di masa depan!

Amit Gupta
sumber
3

Jawaban MacOS dengan beberapa versi Java terinstal dan tidak perlu menghapus instalan

Tunjukkan versi Java yang telah saya instal:

$ ls -l /Library/Java/JavaVirtualMachines/

Untuk menyetelnya ke versi jdk1.8 saya:

$ ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin/javac /usr/local/bin/javac

Untuk menyetelnya ke versi jdk11 saya:

$ ln -s /Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home/bin/javac /usr/local/bin/javac

-------------------------------------------------- -----------------------

Perhatikan bahwa, terlepas dari apa yang dikatakan pesan, tampaknya itu berarti menginginkan versi 1.8, dan menampilkan pesan ini jika Anda memiliki versi yang lebih baru.

Berikut ini adalah upaya saya sebelumnya yang membawa saya ke jawaban di atas, yang kemudian berhasil ... Anda mungkin perlu melakukan sesuatu yang berbeda tergantung pada apa yang diinstal, jadi mungkin catatan ini dapat membantu:


Setel ke versi jdk1.8 saya

$ export PATH=/Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home/bin/javac:$PATH

Setel ke versi jdk11 saya

$ export PATH=/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin/javac:$PATH

... tapi sebenarnya itu tidak berhasil karena /usr/bin/javacmasih yang berjalan lebih dulu:

$ which javac
/usr/bin/javac

... untuk melihat apa yang berjalan pertama kali di jalur:

$ cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

Itu berarti saya dapat mengganti /usr/bin/javac... lihat perintah di bagian atas jawaban ...
Perintah untuk menyetelnya ke jdk1.8 menggunakan ln, di bagian atas jawaban ini, adalah yang berhasil bagi saya.

keris
sumber
2

Pesan kesalahan ini membuat bingung pengguna, layar suksesnya seperti di bawah ini.cordova membangun kesuksesan

Pesan kesalahan membuat pengguna mencoba memperbaiki build yang gagal dengan konfigurasi JAVA_HOME. Namun masalah sebenarnya bukan hanya di JAVA_HOME.

Saya memperbaiki masalah ini dengan konfigurasi yang benar di JAVA_HOME dan Path di "variabel sistem". masukkan deskripsi gambar di sini

Semoga dapat membantu untuk memperbaiki masalah, tetapi tidak menginstal ulang JDK.

Bangyno
sumber
2

Jawaban yang diposting oleh MadNeox benar. Saya menghadapi masalah serupa, saya menginstal jdk 9 serta versi 1.8

Saya pertama kali mencoba dengan menjaga jdk 9 dan menghapus 1.8 itu akan menampilkan kesalahan Pemeriksaan Persyaratan gagal

Kemudian saya mencoba dengan menghapus jdk9 dan menginstal ulang 1. kali ini menunjukkan gagal menjalankan versi javac

Setelah bermain-main dengan variabel Lingkungan untuk beberapa waktu saya akhirnya mendapatkan solusinya

Pada titik ini sistem saya hanya memiliki jdk 1.8 versi Cordova: 7.1.0

-Buka tab Variabel Lingkungan -Di bawah variabel pengguna buat variabel baru PATH -berikan nilai berikut C: \ Program Files \ Java \ jdk1.8.0_151 \ bin (dapat berubah tergantung di mana Anda menginstal jdk)

Ini harus menyelesaikan masalah Anda. Semoga membantu

Meskipun jawabannya sudah diberikan, saya butuh waktu untuk mencari tahu di mana kesalahan saya, jadi putuskan untuk memposting ini dengan harapan akan menghemat waktu orang lain

Amey Bhivshet
sumber
1

Pastikan bahwa versi JDK yang sama (misalnya 1.8 dalam kasus ini) dapat diakses dari PATHvariabel lingkungan dan JAVA_HOME. Contoh: Jika JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152kemudian PATHvariabel juga harus berisi jalur di atas dan yang terpenting sebelum (jika ada) jalur lain jika JDK / JRE sudah disebutkan dalam PATHvariabel. Anda dapat memilih untuk menghapus versi lain jika tidak ada aplikasi lain yang menggunakan versi java yang berbeda.

Tujuan
sumber
1

Jika Anda telah menginstal jdk8 dan jdk9, Anda harus memeriksa versi yang mana

di jalur dan tujuan JAVA_HOME.

Di log yang Anda posting, saya melihat bahwa JAVA_HOME mengarah ke JDK9.

ubah globel JAVA_HOME env var Anda ke target JDK8 atau Anda dapat mengubah JAVA_HOME di PowerShell sebelum Anda menggunakan Cordova CLI jika Anda ingin menggunakan jdk8 hanya untuk cordova:

$env:JAVA_HOME="C:\Program Files\Java\jdk1.8.0_151"

**cordova build android**
Bal mukund kumar
sumber
1

jika Anda memiliki beberapa versi Java yang terinstal dan perlu mempertahankannya, Anda perlu memeriksa hal-hal berikut:

  • JAVA_HOME menunjuk ke jdk1.8 Anda
  • dalam variabel PATH Anda, Anda perlu memeriksa apakah jalur jdk1.8 \ bin sebelum jalur jdk \ bin lainnya
fehrlich
sumber
1

Saya menghadapi masalah yang sama dengan jdk1.8.0_201. Ini teratasi ketika saya membuat JAVA_HOME = C: \ Program Files \ Java \ jdk1.8.0_201 dan menambahkan "C: \ Program Files \ Java \ jdk1.8.0_201 \ bin" di variabel jalur

Samson Daniel
sumber
1

Saya memiliki (Open) JDK 8 dan 11 diinstal pada Windows 10 dan saya memiliki masalah yang sama. Bagi saya yang berikut ini berhasil:

  1. Setel JAVA_HOME agar mengarah ke JDK 8. (Disebutkan dalam banyak jawaban sebelumnya.) DAN
  2. Hapus (!) JDK 11 dari PATH karena ternyata - meskipun menampilkan jalur JAVA_HOME yang mengarah ke JDK 8 - Cordova sebenarnya mengakses JDK 11 yang disertakan dalam PATH, yang membuat pemeriksaan versi Java gagal.
Dominik
sumber
1

Ini pertanyaan lama, tetapi karena saya baru saja mengalami masalah yang sama, tetapi kesalahan memiliki sumber lain, berikut jawaban singkatnya.

Masalah terjadi di Windows (hanya) dan dengan Webstorm IDE 2019.2

Pada versi 2019.2 Webstorm memiliki masalah, karena secara internal menggunakan open jdk untuk variabel% JAVA_HOME%, bukan (dari os) jdk java yang ditargetkan.

Dalam kasus saya (ya sudah tua, ini adalah proyek cordova tua ...)

menjalankan java -versiondi Windows cmd.exe:

$ java -version
java version "1.8.0_221"

tetapi mengeksekusi java -versiondi terminal Webstorms:

$ java -version
openjdk version "11.0.3" 2019-04-16
// more output

Perbaikan datang dengan tambalan yang dirilis nanti (hari ini), versi 2019.2.1. Sekarang Webstorm menggunakan variabel os% JAVA_HOME% sebagaimana mestinya dan java -versionhasilnya sama dalam kedua kasus.

Semoga membantu seseorang!

nilsK
sumber
1

Kesalahan terjadi saat jalur default ke java disetel ke versi selain Java 8 atau JDK 1.8. *

Untuk kasus saya, saya telah menginstal Java 11 setelah menginstal Java 8

Anda dapat menguji dengan menjalankan:

java -version

Untuk kasus saya, pengembaliannya:

java version "11.0.8" 2020-07-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.8+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode)

Untuk memperbaikinya, kita perlu memastikan jalur java diarahkan ke binari Java 8 sebagai gantinya

Dengan asumsi Anda sudah menginstal Java 8 atau JDK 1.8. *:

  1. Pastikan JAVA_HOME dan JRE_HOME sudah diatur (pastikan menunjuk ke Java 1.8. *)

Variabel env

  1. Di dalam PATH, Pastikan %JAVA_HOME%\binatau C:\Program Files\Java\jdk1.8.0_251\binditambahkan

masukkan deskripsi gambar di sini

  1. Sumber masalah: Penginstalan JDK 11 saya menambahkan dua entri PATH tepat di bagian atas, yang diutamakan atau menimpa %JAVA_HOME%\binPATH yang mengarah ke JDK 1.8. *

Jangan tambahkan ini jika Anda tidak memilikinya, cari entri PATH lain yang mungkin menimpa %JAVA_HOME%\bin

masukkan deskripsi gambar di sini

  1. Klik "Pindah ke Bawah" untuk menimpa entri sampai mereka di bawah %JAVA_HOME%\bin

%JAVA_HOME%\bin PATH yang mengarah ke Java 8 sekarang akan diprioritaskan di atas entri PATH lainnya yang mengarah ke JDK 11

masukkan deskripsi gambar di sini

  1. Simpan, dan buka terminal baru dan jalankan
java -version

Untuk kasus saya, itu kemudian dikembalikan:

java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)

Tetap!

Nickson Yap
sumber
0
  1. Buka Beranda panel kontrol
  2. Pengaturan Sistem Lanjutan
  3. Variabel Lingkungan
  4. Pilih JAVA_HOME
  5. edit
  6. nilai variabel untuk 1,8 satu
Salvin
sumber
0

Sepertinya Android SDK tidak mendukung Java 9. Downgrade ke 8 jika Anda tidak ingin kembali ke JDK 1.8 yang menurut saya konyol. JDK 8 berfungsi untuk saya tetapi pastikan untuk mengatur variabel lingkungan JAVA_HOME ke lokasi instalasi JDK Anda dengan benar.

Dgoldenone
sumber
0

Sesuai dokumentasi resmi Cordova, ia hanya mendukung JDK 1.8 tidak lebih hingga tanggal (April 2018) . Atau mungkin ada masalah dengan skrip deteksi versi dalam cordova.

Cordova: Memasang persyaratan

Abhay
sumber
0

Saya baru saja mengganti nama folder JDK yang lebih lama dengan _, untuk berjaga-jaga jika saya membutuhkannya lebih lanjut, dan itu berhasil.

C:\Program Files (x86)\Java\_jdk1.7.0_40 
C:\Program Files (x86)\Java\_jre7
Livio
sumber
Di komputer saya, konfigurasi java dan javac tidak konsisten: java menunjuk ke JDK 9 sementara javac menunjuk ke JDK 8. Menyetel keduanya ke JDK 8 memperbaiki masalah.
ominug
0

Saya menggunakan windows dan memiliki dua jdk 1.8 dan 14 versi sesuatu ...

Menghadapi masalah yang sama dan setelah beberapa debugging temukan solusinya.

  1. setel JAVA_HOME dengan benar.
  2. Ubah nilai PATH variabel pengguna dengan versi jdk (1.8) baru.
  3. Ubah nilai PATH variabel pengguna dengan versi jdk (1.8) baru.

Dan itu terpecahkan

Viplav Soni
sumber
0

Versi Ubuntu / Debian Linux dari jawaban ini adalah menginstal openjdk 8 dan mengatur default melaluiupdate-alternatives


# install (open)jdk 8
sudo apt-get install -y openjdk-8-jdk

# update java compiler and set to 1.8
update-alternatives --config javac

# update java runtime (optional)
update-alternatives --config java

# Also set $JAVA_HOME and $PATH to your .bashrc (optional)
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' >> ~/.bashrc
echo 'export PATH="$PATH:$JAVA_HOME/bin' >> ~/.bashrc

# load in current bash session
source ~/.bashrc
lcapra.dll
sumber