Cordova: JDK 1.8 veya üstü için gereksinim kontrolü başarısız oldu


93

Windows 7 işletim sisteminde Cordova 6.4.0 kullanıyorum, ancak android sürümünü oluşturmaya çalıştığımda şu hatayı alıyorum:

Sorunun Açıklaması

Java Home değişkeni, JDK yoluna doğru bir şekilde ayarlanmış, ancak bu sorunu neden aldığımı bilmiyorum. Herhangi bir öneriniz lütfen?


3
Tamam. Aynı sorunu yaşadım, ancak 1.8 sürümünü başka bir isim altında saklandığı için indiremedim. 8u152. Birkaç saat sonra onu burada buldum: oracle.com/technetwork/java/javase/downloads/…
user2367101

Yanıtlar:


58

1.8 JDK'yı Yükle 1.8 dahil olmak üzere önceki tüm JDK'yı kaldırın


3
Size @Urbycoz sadece gitmeye gerek Add or Remove Programs/Program Featuresde Windows OS. Ardından, önceki Java sürümlerini kaldırın. Ben vardı version 7yüklenmiş ve sonra uninstallingbuna, cordova run androidçalıştı. İyi şanslar.
Aakash

1
Ama bu ne demektir? Cordova, farklı JDK'lar kuruluysa JDK'yı nasıl seçer? Yalnızca bir JDK'ya sahip olmanız mümkün olamaz (örn. İnşa makinesi)?
Bruno Ranschaert


19
@MadNeox'un başka bir sürümü kaldırması sadece bir çözüm değil, çözüm değil
Gandhi

benim için hile yaptı. appwiz.cpl adresine gitti (windows cmd'den) ve java 7 ve java sdk 7'yi kaldırdı.
Ortiz

53

Linux'ta (Debian / Ubuntu) bu, bir Java 1.8 SDK seçilerek çözülebilir.

sudo update-alternatives --config javac

JAVA_HOMEEnv değişkenini doğrudan değiştirmenin herhangi bir etkisi yok gibi görünüyor.

DÜZENLEME: yorumlara yanıt verme: Bunun, paket yöneticisi aracılığıyla yeni Debian (ve görünüşe göre Ubuntu) Java kurulumlarının JAVA_HOMEJRE'nin konumunu belirlemek için ortam değişkenini kullanmaması gerçeğiyle bir ilgisi olabilir . Daha fazla bilgi için buna ve bu gönderiye bakın .


1
Günümü gün ettin. Son birkaç gün içinde her şeyi denedim. Çok teşekkürler. Ama neden sadece bu çalışıyor? Değişken belirlemenin neden hiçbir etkisi yoktur?
benim-

1
Ubuntu'da da benim için çalıştı ... Bunu için yaptım javaama yapmadım javac! Artık Java 9'u kaldırmaya gerek yok :)
hughjdavey

Aynı söz burada. JAVA_HOMESağ 1.8 JDK'yı işaret etmesine rağmen , yalnızca sistem varsayılanını güncellemek Cordova'yı tatmin etti.
myoan

1
Sudo update-alternatives --config javac yapılırken javac bağlantı grubunda tek bir alternatif vardır (/ usr / bin / javac sağlar): / usr / lib / jvm / java-11-openjdk-amd64 / bin / javac Yapılandırılacak hiçbir şey yok . java-8-openjdk'ye geri dönmem gerekiyor bunu yapmak için uzakta mı?
Taieb

Bu neden ubuntu'da bir çözüm. Tıpkı myoan'ın dediği gibi, neden sistem varsayılanını güncellemek cordova'yı tatmin ediyor?
Jithin

40

Daha yüksek bir sdk sürümünü kaldırmanız gerekmez. sadece jdk1.8.0_161'i kurun veya zaten kurulu ise yükleme.

Şimdi sadece JAVA_HOMEUSER değişkenini (sistem değişkenini değil) aşağıdaki resimde gösterildiği gibi ayarlayın.

görüntü açıklamasını buraya girin

Bu şekilde, daha yüksek sürümü kaldırmanız gerekmez ve sorun çözülür.


9
Komutlarınızı tekrar çalıştırmayı denemeden önce terminali / IDE'yi kapatmayı unutmayın.
Daniel

1
veya sadece $ çalıştırabilirsiniz. ~ / .bashrc, env değişkenlerini yeniden dışa aktarmak için
Nick Cuevas


23

8'den büyük bir sürüme sahip olabilirsiniz, ancak Cordova yalnızca JDK 1.8'i destekler. Bu bağlantıyı görüntüleyin Cordova Belgeleri

Aslında java'nızın sürüm numarasını kontrol eden kod parçasına bir göz attım. Aşağıdaki arayın module.exports.check_java içinde platformlarda / android / cordova / lib / check_reqs.js . 220. satırda. Ekip tarafından bırakılan ve Java 10'un gelecekte destekleneceği bir normal ifade ve yorum göreceksiniz.

Java 10 gibi java'nın en son sürümleriyle çalıştırıldığında mevcut normal ifade başarısız olacaktır. Bunun nedeni Java 8 veya 9'un aşağıdaki biçimde kaydedilmesidir: 1. [8-9]. ** ancak Java 10 kaydedilir olarak 10. ** ve normal ifade 1. [8-9] biçiminde bir sürüm arar. **

// 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);

Çözümüm:

Yükleyici her sürümü belirli bir klasöre yüklediği için mevcut JRE veya JDK sürümünüzü kaldırmanız gerekmez.

1- Java 8 sürümünü yükleyin Bu bağlantıyı izleyin

2- Ortam değişkenlerinizi güncelleyin:

  • JDK'yı yüklediyseniz JAVA_HOME
  • JRE'yi yüklediyseniz JRE_HOME

JRE 8 ve JDK 8'in kurulu olduğu konuma işaret ederek.

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

Yeni bir terminal oturumu açın ve başarısız olan komutu çalıştırın. Şimdi çalışmalı.

İşe yaramadı?

Başka nedenlerden dolayı başarısız olursa, olası hata ayıklama süreci:

  • JAVA_HOME ve JRE_HOME değişkenlerinin Sistem değişkenleri olduğundan emin olun.
  • Kullanıcı Yolunuza eklendiklerinden emin olun Yola değişkenler ekleyin

Bu benim için tek doğru cevaptı. Daha fazla bilgi için bu bağlantıya bakın evothings.com/doc/build/cordova-install-linux.html
Dara Java

17

JDK'nın eski sürümlerini kaldırmak işe yarardı. Ama sanırım geçici bir çözüm olabilir. Aynı sorunla karşılaştım ve hem JDK'nın yeni sürümünün hem de eski sürüm JDK yolunun 'path'çevresel değişkende' bahsedildiğini fark ettim .

Eski sürüm JDK yolunu 'path'çevresel değişkeninden kaldırmak benim için hile yaptı. Umarım birine de yardımcı olur.


ortam değişkenlerini ayarlıyorsanız, bu yararlı superuser.com/questions/949560/…
Yvonne Aburrow

Evet, bununla build komutunu çalıştırabiliyorum, ancak yine de INSTALL FAILED UPDATE INCOMPATIBLE hatasını gösteren 'ionic cordova run android' komutuyla mücadele ediyorum.
supriya chauhan

@supriyachauhan tüm öğeleri yeniden yüklemeyi deneyebilirsiniz. Aksi takdirde sorunu daraltmak için ayrıntılı ayrıntılar vermeniz gerekebilir
Gandhi

9

JAVA_HOME 1.8'i işaret ederken yol çevresel değişkenimin java 1.7'yi gösterdiğini fark ettim, bu yüzden yol değişkenini 1.8 olarak düzenledim ve iyiydim.


8

benim durumumda JAVA_HOME C: \ Program Files (x86) \ Java \ jdk1.7.0_55'e işaret ediyordu

i yazarken nerede java cmd'ye o outputted C: \ Program Files (x86) \ Java \ jdk1.7.0_55 java.exe yolu ile yanındaki i değiştirdik java_home değişken ortam değişkenleri ila \ Program Files \ Java: C \ jdk1.8.0_20 & işe yaradı, bu yüzden 2 jdk örneğim var gibi görünüyor ve cordova'nın v1.8. * birine ihtiyacı var.


Yol değişkeninizin nereye işaret ettiğini kontrol edin. JAVA_HOME 1.8'i gösteriyordu ama Yol'da farklı bir sürüme işaret ediyordu. İkisini hizaladıktan sonra iyi çalıştı!
ahb

6

MAC: Şuraya gidin: / Library / Java / JavaVirtualMachines Yalnızca jdk1.8.0_201.jdk'ye sahip olduğunuzdan emin olun Eğer çok varsa diğer JDK'yı kaldırın


5

@Hozington'a katılıyorum. Bu, Cordova kodundaki Java sürümünü algılama hatası olmalıdır. Yaptığım şey:

  1. JDK 10'u koruyun
  2. JDK 8'i yükleyin
  3. Change JAVA_HOMEJDK 8 yoluna ve değiştirmek pathsıra değişken.
  4. "cmd" yi yeniden başlatın ve cordova buildtekrar çalıştırın .

Ve hata ortadan kalktı!


4

JDK'nın birçok sürümüne sahipseniz çalıştırabilirsiniz

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

cordova kurulumundan önce, jdk'nin belirli bir sürümünü kullanmak için :)


4

Birden çok Java sürümü yüklü ve kaldırmaya gerek olmayan MacOS yanıtı

Hangi Java sürümlerini yüklediğimi bana göster:

$ ls -l /Library/Java/JavaVirtualMachines/

Jdk1.8 sürümüme ayarlamak için:

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

Jdk11 sürümüme ayarlamak için:

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

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

Mesajın söylediğine rağmen, bunun 1.8 sürümünü istediği anlamına geldiğini ve daha sonraki bir sürümünüz varsa bu mesajı attığını unutmayın .

Aşağıda, beni yukarıdaki cevaba götüren ve daha sonra işe yarayan önceki girişimlerim var ... Yüklü olana bağlı olarak farklı bir şey yapmanız gerekebilir, bu yüzden belki bu notlar yardımcı olabilir:


Jdk1.8 sürümüme ayarla

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

Jdk11 sürümüme ayarla

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

... ama aslında bu işe yaramıyor çünkü /usr/bin/javachala ilk çalışan şey:

$ which javac
/usr/bin/javac

... yolda ilk önce neyin çalıştığını görmek için:

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

Bu şu demek oluyor ki /usr/bin/javac... cevabın üst kısmındaki komutları gör ...
Bunu jdk1.8 olarak ayarlama komutu ln, bu cevabın en üstünde, benim için işe yarayan şeydi .


3

Karışımı Windows'ta doğru bir şekilde almak için aşağıdakileri yapmanız gerekir

  1. JDK 1.8 veya üzeri herhangi bir sürümünü indirin ve kurun .
  2. Ortam değişkenlerini açın, JAVA_HOME adlı bir ortam değişkeni oluşturun ve değeri JDK yükleme yolu olarak ayarlayın. değere C:\Program Files\Java\jdk1.8.0_162 eklemediğinizden emin olun \bin.

görüntü açıklamasını buraya girin

  1. Sistem yolu değişkeninize noktalı virgül koyun ;ve bu değeri sistem yoluna ekleyin örn. C:\Program Files\Java\jdk1.8.0_162\bin;Burada \bineklenir.

Not: Ortam değişkenleri aldatıcıdır. A ile kapatılmaları gerekir ; başka bir tane açmadan önce. Bu yüzden değeri eklemeden önce bir tane ve kapatmak için değerden sonra bir tane koyuyoruz.

görüntü açıklamasını buraya girin

  1. Şimdi terminali kapatın ve yeniden açın, ardından önceki komutları çalıştırın.

JAVA_HOME, PATH'den java ... adreslemenin bir karışımı var. cordova muhtemelen java12 / 13'e işaret eden PATH kullanıyor
bortunac

3

Bazen yolu değiştirir ve java-homeişe yaramaz. Eklemeniz gerekiyor

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

çevresel değişken yoluna da.


3

Bugün , terminal aracılığıyla Cordova : Requirements check failed for JDK 1.8 or greaterkomut çalıştırdığımda Ionic App oluştururken Mac OS'umda da bu hatayı aldım ionic cordova build --release android.

Aşağıdaki komut sorunumu çözüyor: -

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

Umarım gelecekte birine yardımcı olur!


2

Bu hata mesajı, aşağıdaki gibi başarı ekranı kullanıcının kafasını karıştırır.cordova başarı inşa

Hata mesajı, kullanıcının JAVA_HOME yapılandırması ile derleme hatasını düzeltmeye çalışmasını sağlar. Ancak asıl sorun sadece JAVA_HOME'da değil.

Bu sorunu JAVA_HOME'da ve "sistem değişkeninde" Yolda doğru yapılandırma ile çözüyorum. görüntü açıklamasını buraya girin

Hope, sorunun çözülmesine yardımcı olabilir, ancak JDK'yı yeniden yüklemez.


2

MadNeox tarafından gönderilen cevap doğru. 1.8 sürümünün yanı sıra jdk 9'u yükledim de benzer bir sorunla karşı karşıyaydım

İlk önce jdk 9'u tutarak ve 1.8'i kaldırarak denedim, Gereksinimler kontrolü başarısız oldu

Sonra jdk9'u kaldırıp yeniden yüklemeyi denedim 1. bu sefer javac sürümünü çalıştırmada başarısız olduğunu gösteriyordu

Bir süre Çevre değişkenleriyle oynadıktan sonra nihayet çözümü aldım

Bu noktada sistemimde yalnızca jdk 1.8 Cordova sürümü var: 7.1.0

-Açık Ortam Değişkenleri sekmesi -Kullanıcı değişkenlerinin altında yeni bir PATH değişkeni oluşturun -buna aşağıdaki değeri verin C: \ Program Files \ Java \ jdk1.8.0_151 \ bin (jdk'nizi nereye yüklediğinize bağlı olarak değişebilir)

Bu, sorununuzu çözmeli Umarım yardımcı olur

Cevap zaten verilmiş olmasına rağmen, nerede yanlış yaptığımı anlamam biraz zaman aldı, bu yüzden başka birinin zamanını kurtaracağını umarak bunu göndermeye karar verdim


1

Aynı JDK sürümlerinin (yani bu durumda 1.8) PATHortam değişkeninden ve JAVA_HOME. Örnek: Eğer JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152o zaman PATHdeğişken de yukarıdaki yolu içermelidir ve önemli olarak herhangi bir yoldan (varsa) önce, eğer JDK / JRE PATHdeğişkende zaten belirtilmişse . Başka hiçbir uygulama java'nın farklı sürümünü kullanmıyorsa, diğer sürümleri kaldırmayı seçebilirsiniz.


1

Hem jdk8 hem de jdk9 yüklüyse, hangi sürümün olduğunu kontrol etmelisiniz.

yolda ve JAVA_HOME'un işaret ettiği yerde.

Gönderdiğiniz günlükte, JAVA_HOME'un JDK9'a yol açtığını görüyorum.

globel JAVA_HOME env var değişkeninizi JDK8 hedefine değiştirin veya jdk8'i yalnızca cordova için kullanmak istiyorsanız, cordova CLI'yi kullanmadan önce powershell'de JAVA_HOME'u değiştirebilirsiniz:

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

**cordova build android**

1

Birden fazla Java sürümünüz kurulu ise ve bunları saklamanız gerekiyorsa, aşağıdakileri kontrol etmeniz gerekir:

  • JAVA_HOME, jdk1.8'inizi işaret ediyor
  • PATH değişkeninizde jdk1.8 \ bin yolunun diğer jdk \ bin yollarından önce olduğunu kontrol etmeniz gerekir

1

Jdk1.8.0_201 ile aynı sorunla karşılaştım. JAVA_HOME = C: \ Program Files \ Java \ jdk1.8.0_201'i yapıp "C: \ Program Files \ Java \ jdk1.8.0_201 \ bin" dosyasını eklediğimde çözüldü yol değişkeni


1

Windows 10'a (Açık) JDK 8 ve 11 yükledim ve aynı sorunu yaşadım. Benim için aşağıdakiler çalıştı:

  1. JAVA_HOME'u JDK 8'i gösterecek şekilde ayarlayın. (Daha önce birçok yanıtta bahsedilmiştir.) VE
  2. JDK 11'i PATH'den çıkarın, çünkü JDK 8'i gösteren JAVA_HOME yolunu göstermesine rağmen, Cordova aslında PATH'de bulunan JDK 11'e erişti ve bu da Java sürüm kontrolünün başarısız olmasına neden oldu.

1

Bu eski bir soru, ama aynı sorunu yaşadığım için, ancak hatanın başka bir kaynağı vardı, burada kısa bir cevap.

Windows'ta (yalnızca) ve Webstorm IDE 2019.2'de sorun oluştu

2019.2 sürümünde Webstorm'un bir sorunu vardı, çünkü (işletim sisteminden) hedeflenen java jdk yerine% JAVA_HOME% değişkeni için dahili olarak açık jdk kullanıyordu.

Benim durumumda (evet eski, eski bir cordova projesi ...)

java -versionWindows cmd.exe'de yürütülüyor :

$ java -version
java version "1.8.0_221"

ancak java -versionWebstorms terminalinde çalıştırılıyor :

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

Daha sonra (bugün) yayınlanan yama 2019.2.1 sürümüyle bir düzeltme geldi. Artık Webstorm, gerektiği gibi os% JAVA_HOME% değişkenini kullanıyor ve java -versionçıktı her iki durumda da aynı.

Umarım birine yardımcı olur!


1

Hata, varsayılan java yolu Java 8 veya JDK 1.8 dışında bir sürüme ayarlandığında ortaya çıkar. *

Benim durumum için Java 8'i yükledikten sonra Java 11 yükledim

Şunları çalıştırarak test edebilirsiniz:

java -version

Benim durumum için geri döndü:

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)

Bunu düzeltmek için, bunun yerine java yolunun Java 8 ikili dosyalarına yönlendirildiğinden emin olmalıyız

Zaten Java 8 veya JDK 1.8. * 'İnizin kurulu olduğunu varsayarsak:

  1. JAVA_HOME ve JRE_HOME'un ayarlandığından emin olun (Java 1.8'i gösterdiğinden emin olun. *)

Env değişkeni

  1. PATH içinde, emin olun %JAVA_HOME%\binveya C:\Program Files\Java\jdk1.8.0_251\bineklendi

görüntü açıklamasını buraya girin

  1. Sorunun kaynağı: JDK 11 kurulumum %JAVA_HOME%\bin, JDK 1.8'e işaret eden PATH'yi önceliklendirerek veya geçersiz kılarak en üstte iki PATH girişi ekledi . *

Bunlara sahip değilseniz eklemeyin, geçersiz kılan diğer PATH girişlerini bulun %JAVA_HOME%\bin

görüntü açıklamasını buraya girin

  1. Aşağıya gelene kadar geçersiz kılan girişler için "Aşağı Taşı" yı tıklayın %JAVA_HOME%\bin

%JAVA_HOME%\bin Java 8'i işaret eden PATH artık JDK 11'e işaret eden diğer PATH girişlerine göre önceliklendirilecektir.

görüntü açıklamasını buraya girin

  1. Kaydedin ve yeni bir terminal açın ve çalıştırın
java -version

Benim durumum için daha sonra geri döndü:

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)

Sabit!


0
  1. Kontrol paneli Ana Sayfasına git
  2. Gelişmiş sistem Ayarları
  3. Ortam Değişkenleri
  4. JAVA_HOME seçin
  5. Düzenle
  6. 1.8 bir için değişken değer

0

Görünüşe göre Android SDK Java 9'u desteklemiyor. JDK 1.8'e geri dönmek istemiyorsanız 8'e düşürün ki bu benim için saçma. JDK 8 benim için çalışıyor ancak JAVA_HOME ortam değişkenini JDK kurulumunuzun konumuna doğru ayarladığınızdan emin olun.



0

Daha _fazla ihtiyacım olursa diye eski JDK klasörünü yeniden adlandırdım ve işe yaradı.

C:\Program Files (x86)\Java\_jdk1.7.0_40 
C:\Program Files (x86)\Java\_jre7

Makinemde java ve javac'ın yapılandırması tutarsızdı: java JDK 9'u, javac ise JDK 8'i gösteriyordu. Her ikisini de JDK 8'e ayarlamak sorunu çözdü.
ominug

0

Windows kullanıyorum ve iki jdk 1.8 ve 14 sürümüne sahip bir şey var ...

Aynı sorunla karşılaştı ve bazı hata ayıklamalardan sonra çözümü bulun.

  1. JAVA_HOME'u doğru ayarlayın.
  2. Kullanıcı değişkeni PATH değerini yeni jdk (1.8) sürümü ile değiştirin.
  3. Kullanıcı değişkeni PATH değerini yeni jdk (1.8) sürümü ile değiştirin.

Ve çözüldü


0

Ubuntu / Debian Linux bu cevabın sürümü 8 OpenJDK yükleyip aracılığıyla varsayılan ayarlamaktırupdate-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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.