Cordova: sprawdzenie wymagań nie powiodło się dla JDK 1.8 lub nowszego

93

Używam Cordova 6.4.0 w systemie operacyjnym Windows 7, ale pojawia się ten błąd, gdy próbuję zbudować wersję Androida:

Opis problemu

Zmienna Java Home jest poprawnie ustawiona na ścieżkę JDK, ale nie wiem, dlaczego pojawia się ten problem. Jakieś sugestie?

MadNeox
źródło
3
Ok. Miałem ten sam problem, ale nie mogłem pobrać wersji 1.8, ponieważ jest ukryta pod inną nazwą. Jest to 8u152. Po kilku godzinach znalazłem to tutaj: oracle.com/technetwork/java/javase/downloads/…
user2367101

Odpowiedzi:

58

Odinstaluj wszystkie poprzednie JDK, w tym 1.8 Zainstaluj JDK 1.8

MadNeox
źródło
3
@Urbycoz wystarczy udać się do Add or Remove Programs/Program Featuresw Windows OS. Następnie usuń wszystkie poprzednie wersje Java. Miałem version 7też zainstalowany i po uninstallingnim cordova run androiddziałał. Powodzenia.
Aakash
1
Ale co to oznacza? W jaki sposób cordova wybiera JDK, jeśli są zainstalowane różne JDK. Czy nie można mieć tylko jednego JDK (np. Maszyny budującej)?
Bruno Ranschaert
nadal musisz ustawić zmienne środowiskowe, aby Cordova mogła znaleźć ścieżkę do twojego superużytkownika
JDK.com/questions/949560/ ...
19
@MadNeox odinstalowanie innej wersji to tylko obejście, a nie rozwiązanie
Gandhi
załatwił sprawę dla mnie. udał się do appwiz.cpl (z cmd systemu Windows) i usunął java 7 i java sdk 7.
Ortiz
53

W systemie Linux (Debian / Ubuntu) można to rozwiązać, wybierając pakiet Java 1.8 SDK w

sudo update-alternatives --config javac

JAVA_HOMEWydaje się, że bezpośrednia zmiana zmiennej env nie przynosi żadnego efektu.

EDYCJA: odpowiadanie na komentarze: Prawdopodobnie ma to coś wspólnego z faktem, że nowe instalacje Debiana (i najwyraźniej Ubuntu) Java za pośrednictwem menedżera pakietów nie używają JAVA_HOMEzmiennej środowiskowej do określenia lokalizacji środowiska JRE. Zobacz ten i ten post, aby uzyskać więcej informacji.

oseiskar
źródło
1
Uczyniłeś mój dzień. Próbowałem wszystkiego w ciągu ostatnich kilku dni. Wielkie dzięki. Ale dlaczego tylko to działa? Dlaczego ustawienie zmiennej nie ma wpływu?
mój-
1
Pracowałem też dla mnie na Ubuntu ... Zrobiłem to, javaale nie javac! Teraz nie ma potrzeby odinstalowywania Javy 9 :)
hughjdavey
Ta sama uwaga tutaj. Chociaż JAVA_HOMEwskazywał na prawy 1.8 JDK, tylko aktualizacja domyślnego systemu zadowalała Cordova.
myoan
1
Podczas wykonywania sudo update-alternatives --config javac W grupie linków javac jest tylko jedna alternatywa (zapewniająca / usr / bin / javac): / usr / lib / jvm / java-11-openjdk-amd64 / bin / javac Nie ma nic do skonfigurowania . muszę wrócić do java-8-openjdk. czy jest tam, aby to zrobić?
Taieb
Dlaczego jest to rozwiązanie w systemie Ubuntu. Tak jak powiedział myoan, dlaczego aktualizacja domyślnego systemu zadowoliła cordova?
Jithin
40

Nie musisz odinstalowywać żadnej wyższej wersji sdk. po prostu zainstaluj jdk1.8.0_161 lub nie, jeśli jest już zainstalowany.

Teraz po prostu ustaw JAVA_HOMEzmienną USER (nie zmienną systemową), jak pokazano na poniższym obrazku.

wprowadź opis obrazu tutaj

W ten sposób nie musisz odinstalowywać wyższej wersji, a problem zostanie rozwiązany.

Rashmin Javiya
źródło
9
Pamiętaj, aby zamknąć terminal / IDE przed ponowną próbą uruchomienia poleceń.
Daniel
1
lub możesz po prostu uruchomić $. ~ / .bashrc, aby ponownie wyeksportować zmienne env
Nick Cuevas
33

To, co zadziałało, to odinstalowanie jdk 9 i ponowne zainstalowanie jkd 8.x

Na komputerze Mac, aby odinstalować, przejdź do terminala i wykonaj następujące kroki:

cd /Library/Java/JavaVirtualMachines

sudo rm -rf jdk-9.0.1.jdk

Następnie zainstaluj jdk 8.x, pobierając pakiet .dmg z Oracle.

Bandito11
źródło
23

Możesz mieć wersję wyższą niż 8, ale Cordova obsługuje tylko JDK 1.8. Wyświetl ten link Dokumentacja Cordova

Rzuciłem okiem na fragment kodu, który faktycznie sprawdza numer wersji twojej javy. Poszukaj następującego: module.exports.check_java w platformach / android / cordova / lib / check_reqs.js . w linii 220. Zobaczysz wyrażenie regularne i komentarz pozostawiony przez zespół, że Java 10 będzie obsługiwana w przyszłości.

Istniejące wyrażenie regularne nie powiedzie się, jeśli zostanie uruchomione z najnowszymi wersjami języka Java, takimi jak Java 10. To dlatego, że Java 8 lub 9 są zapisywane w następującym formacie: 1. [8-9]. ** ale Java 10 jest zapisywana jako 10. **, a wyrażenie regularne szuka wersji w formacie 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);

Moje rozwiązanie:

Nie musisz odinstalowywać bieżącej wersji środowiska JRE lub JDK, ponieważ instalator instaluje każdą wersję w określonym folderze.

1- Zainstaluj wersję Java 8 Skorzystaj z tego łącza

2- Zaktualizuj zmienne środowiskowe:

  • JAVA_HOME, jeśli zainstalowałeś pakiet JDK
  • JRE_HOME, jeśli zainstalowałeś JRE

wskazując im miejsce, w którym zainstalowano JRE 8 i JDK 8.

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

Otwórz nową sesję terminala i uruchom polecenie, które się nie powiodło. Teraz powinno działać.

Nie działał?

Jeśli to się nie powiedzie z innych powodów, możliwy proces debugowania:

  • Upewnij się, że zmienne JAVA_HOME i JRE_HOME są zmiennymi systemowymi.
  • Upewnij się, że zostały dodane do ścieżki użytkownika. Dodaj zmienne do ścieżki
Gloire
źródło
To była dla mnie jedyna poprawna odpowiedź. Zobacz ten link, aby uzyskać więcej informacji evothings.com/doc/build/cordova-install-linux.html
Dara Java
17

Odinstalowanie starszych wersji JDK by działało. Ale myślę, że może to być obejście. Napotkałem ten sam problem i zauważyłem, że zarówno nowa wersja JDK, jak i starsza wersja ścieżki JDK zostały wymienione w 'pathzmiennej środowiskowej.

Usunięcie ścieżki JDK starszej wersji ze 'pathzmiennej środowiskowej załatwiło sprawę. Mam nadzieję, że to też komuś pomoże.

Gandhi
źródło
jeśli ustawiasz zmienne środowiskowe, może Ci się przydać ten superuser.com/questions/949560/ ...
Yvonne Aburrow
Tak, jestem w stanie uruchomić polecenie kompilacji za pomocą tego, ale nadal zmagam się z poleceniem uruchomienia „ionic cordova run android”, pokazując błąd INSTALACJA NIEUDANA AKTUALIZACJA NIEZGODNA.
supriya chauhan
@supriyachauhan możesz spróbować ponownie zainstalować wszystkie elementy od nowa. W przeciwnym razie może być konieczne podanie szczegółowych szczegółów, aby zawęzić problem
Gandhi
9

Odkryłem, że moja zmienna środowiskowa ścieżki wskazywała na Javę 1.7, podczas gdy JAVA_HOME wskazywała na 1.8, więc zmieniłem zmienną path na 1.8 i wszystko było w porządku.

Iyke Perry
źródło
8

w moim przypadku JAVA_HOME wskazywał na C: \ Program Files (x86) \ Java \ jdk1.7.0_55

kiedy napisałem, gdzie java w cmd wyprowadził C: \ Program Files (x86) \ Java \ jdk1.7.0_55 wraz ze ścieżką java.exe, zmieniłem zmienną JAVA_HOME ze zmiennych środowiskowych na C: \ Program Files \ Java \ jdk1.8.0_20 i działało, więc wygląda na to, że miałem 2 instancje jdk, a cordova potrzebuje wersji 1.8. *.

Mawardy
źródło
Sprawdź, gdzie wskazuje zmienna Path. Miałem JAVA_HOME wskazujący na 1.8, ale w Path wskazywał inną wersję. Działało dobrze po wyrównaniu dwóch!
ahb
6

MAC: przejdź do: / Library / Java / JavaVirtualMachines Upewnij się, że masz tylko jdk1.8.0_201.jdk Jeśli masz wiele, usuń inne JDK

Shelly Pritchard
źródło
5

Zgadzam się z @Hozington. To powinien być błąd w kodzie Cordova wykrywający wersję Javy. To co zrobiłem to:

  1. Zachowaj JDK 10
  2. Zainstaluj JDK 8
  3. Zmień na JAVA_HOMEścieżkę JDK 8 i zmień również pathzmienną.
  4. zrestartuj "cmd" i uruchom cordova buildponownie.

A błąd zniknął!

ceeko
źródło
4

jeśli masz wiele wersji JDK, możesz je uruchomić

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

przed kompilacją cordova, aby użyć konkretnej wersji jdk :)

Walterwhites
źródło
3

Chłopaki, aby uzyskać odpowiedni miks w systemie Windows , musisz wykonać następujące czynności

  1. Pobierz i zainstaluj dowolną wersję JDK 1.8 lub nowszą.
  2. Otwórz zmienne środowiskowe, utwórz zmienną środowiskową o nazwie JAVA_HOME i ustaw wartość na ścieżkę instalacji JDK. C:\Program Files\Java\jdk1.8.0_162 upewnij się, że nie dodajesz \binw wartości.

wprowadź opis obrazu tutaj

  1. W zmiennej ścieżki systemowej umieść średnik ;i dodaj tę wartość do ścieżki systemowej, np. C:\Program Files\Java\jdk1.8.0_162\bin;Tutaj\bin jest dodawany.

Uwaga: zmienne środowiskowe są trudne. Przypuszcza się, że są zamykane znakiem ; przed otwarciem kolejnego. Dlatego umieszczamy jeden przed dodaniem wartości, a drugi po wartości, aby ją zamknąć.

wprowadź opis obrazu tutaj

  1. Teraz zamknij terminal i otwórz ponownie, a następnie uruchom poprzednie polecenia.
das świętość
źródło
istnieje połączenie adresowania java ... z JAVA_HOME, PATH. cordova używa PATH, co prawdopodobnie wskazuje na java12 / 13
bortunac
3

Czasami zmiana ścieżki i java-homenie działa. Musisz dodać

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

do ścieżki zmiennej środowiskowej.

Santosh
źródło
3

Dzisiaj otrzymałem również ten błąd Cordova : Requirements check failed for JDK 1.8 or greaterw moim Mac OS podczas budowania aplikacji Ionic, kiedy uruchamiam polecenie ionic cordova build --release androidprzez terminal.

Poniższe polecenie rozwiązuje mój problem: -

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

Mam nadzieję, że pomoże to komuś w przyszłości!

Amit Gupta
źródło
3

Odpowiedź MacOS z zainstalowanymi wieloma wersjami Java i bez konieczności odinstalowywania

Pokaż mi, jakie wersje Java zainstalowałem:

$ ls -l /Library/Java/JavaVirtualMachines/

Aby ustawić to na moją wersję jdk1.8:

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

Aby ustawić to na moją wersję jdk11:

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

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

Zauważ, że pomimo tego, co mówi komunikat, wygląda na to, że oznacza to, że chce wersji 1.8 i wyrzuca ten komunikat, jeśli masz późniejszą wersję.

Poniżej znajdują się moje wcześniejsze próby, które doprowadziły mnie do powyższej odpowiedzi, która wtedy zadziałała ... Być może będziesz musiał zrobić coś innego w zależności od tego, co jest zainstalowane, więc może te notatki mogą pomóc:


Ustaw ją na moją wersję jdk1.8

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

Ustaw ją na moją wersję jdk11

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

... ale w rzeczywistości to nie działa, ponieważ /usr/bin/javacnadal jest uruchamiane jako pierwsze:

$ which javac
/usr/bin/javac

... aby zobaczyć, co jest pierwsze na ścieżce:

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

Oznacza to, że mogę przesłonić /usr/bin/javac... zobaczyć polecenia u góry odpowiedzi ...
Polecenie ustawiania go na jdk1.8, używając lnw górnej części tej odpowiedzi, działa dla mnie.

kris
źródło
2

Ten komunikat o błędzie wprawia użytkownika w zakłopotanie, ekran sukcesu jak poniżej.cordova budować sukces

Komunikat o błędzie sprawia, że ​​użytkownik próbuje naprawić niepowodzenie kompilacji w konfiguracji JAVA_HOME. Ale prawdziwy problem nie dotyczy tylko JAVA_HOME.

Naprawiam ten problem z poprawną konfiguracją w JAVA_HOME i ścieżką w "zmiennej systemowej". wprowadź opis obrazu tutaj

Mam nadzieję, że pomoże rozwiązać problem, ale nie ponownie zainstaluj JDK.

Bangyno
źródło
2

Odpowiedź przesłana przez MadNeox jest prawidłowa, miałem podobny problem, gdy miałem zainstalowany jdk 9, a także wersję 1.8

Najpierw spróbowałem, zachowując jdk 9 i usuwając 1.8, wyświetli się błąd Sprawdzanie wymagań nie powiodło się

Następnie próbowałem odinstalować jdk9 i zainstalować ponownie 1. tym razem nie udało się uruchomić wersji javac

Po pewnym czasie zabawy ze zmiennymi środowiskowymi w końcu otrzymałem rozwiązanie

W tym momencie mój system ma tylko wersję JDK 1.8 Cordova: 7.1.0

-Otwórz zakładkę Zmienne środowiskowe -Pod zmiennymi użytkownika utwórz nową zmienną PATH-nadaj jej następującą wartość C: \ Program Files \ Java \ jdk1.8.0_151 \ bin (może się zmienić w zależności od tego, gdzie zainstalowałeś swój jdk)

To powinno rozwiązać twój problem. Mam nadzieję, że to pomoże

Chociaż odpowiedź została już udzielona, ​​zajęło mi trochę czasu, zanim zrozumiałem, gdzie popełniłem błąd, więc postanowiłem opublikować to w nadziei, że zaoszczędzi to komuś czasu

Amey Bhivshet
źródło
1

Po prostu upewnij się, że te same wersje JDK (czyli w tym przypadku 1.8) są dostępne ze PATHzmiennej środowiskowej i JAVA_HOME. Przykład: Jeśli JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152to PATHzmienna powinna również zawierać powyższą ścieżkę i, co ważne, przed każdą (jeśli istnieją) inną ścieżką, jeśli JDK / JRE już wspomniano w PATHzmiennej. Możesz odinstalować inne wersje, jeśli żadna inna aplikacja nie używa innej wersji java.

Cel
źródło
1

Jeśli masz zainstalowane jdk8 i jdk9, musisz sprawdzić, która wersja jest

w ścieżce i gdzie wskazuje JAVA_HOME.

W opublikowanym przez Ciebie dzienniku widzę, że JAVA_HOME prowadzi do JDK9.

zmodyfikuj swój globel JAVA_HOME env var na docelowy JDK8 lub możesz zmienić JAVA_HOME w PowerShell przed użyciem CLI cordova, jeśli chcesz używać jdk8 tylko dla cordova:

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

**cordova build android**
Bal mukund kumar
źródło
1

jeśli masz zainstalowanych wiele wersji Javy i chcesz je zachować, musisz sprawdzić następujące rzeczy:

  • JAVA_HOME wskazujące na plik jdk1.8
  • w zmiennej PATH musisz sprawdzić, czy ścieżka jdk1.8 \ bin znajduje się przed innymi ścieżkami jdk \ bin
fehrlich
źródło
1

Napotkałem ten sam problem z jdk1.8.0_201. Został rozwiązany, kiedy utworzyłem JAVA_HOME = C: \ Program Files \ Java \ jdk1.8.0_201 i dodałem „C: \ Program Files \ Java \ jdk1.8.0_201 \ bin” w zmienna ścieżki

Samson Daniel
źródło
1

Mam (Open) JDK 8 i 11 zainstalowane w systemie Windows 10 i miałem ten sam problem. U mnie zadziałało:

  1. Ustaw JAVA_HOME tak, aby wskazywało na JDK 8. (Wspomniane w wielu wcześniejszych odpowiedziach). AND
  2. Usuń (!) JDK 11 z PATH, ponieważ okazało się, że - mimo wyświetlania ścieżki JAVA_HOME wskazującej na JDK 8 - Cordova faktycznie uzyskała dostęp do JDK 11, który był zawarty w PATH, co spowodowało niepowodzenie sprawdzenia wersji Javy.
Dominik
źródło
1

To stare pytanie, ale ponieważ miałem ten sam problem, ale błąd miał inne źródło, tutaj krótka odpowiedź.

Problem napotkał w systemie Windows (tylko) i z Webstorm IDE 2019.2

W wersji 2019.2 Webstorm wystąpił problem, ponieważ wewnętrznie używał otwartego jdk dla zmiennej% JAVA_HOME% zamiast docelowej (z systemu operacyjnego) java jdk.

W moim przypadku (tak, jest stary, to stary projekt cordova ...)

uruchamianie java -versionw Windows cmd.exe:

$ java -version
java version "1.8.0_221"

ale wykonując java -versionw terminalu Webstorms:

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

Wraz z wydaną później (dziś) łatką, w wersji 2019.2.1, pojawiła się poprawka. Teraz Webstorm używa zmiennej os% JAVA_HOME% tak, jak powinna, a dane java -versionwyjściowe są identyczne w obu przypadkach.

Mam nadzieję, że to komuś pomoże!

nilsK
źródło
1

Ten błąd występuje, gdy domyślną ścieżką do języka Java jest ustawiona wersja inna niż Java 8 lub JDK 1.8. *

W moim przypadku zainstalowałem Javę 11 po zainstalowaniu Java 8

Możesz przetestować, uruchamiając:

java -version

W moim przypadku zwrócił:

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)

Aby to naprawić, musimy upewnić się, że ścieżka java wskazuje zamiast tego pliki binarne Java 8

Zakładając, że masz już zainstalowaną Javę 8 lub JDK 1.8. *:

  1. Upewnij się, że JAVA_HOME i JRE_HOME są ustawione (upewnij się, że wskazuje na Javę 1.8. *)

Zmienna kopertowa

  1. Wewnątrz ścieżki, upewnij się, że dodano %JAVA_HOME%\binlubC:\Program Files\Java\jdk1.8.0_251\bin

wprowadź opis obrazu tutaj

  1. Źródło problemu: Moja instalacja JDK 11 dodała dwa wpisy PATH na samej górze, mając pierwszeństwo lub nadpisując %JAVA_HOME%\binPATH wskazujący na JDK 1.8. *

Nie dodawaj ich, jeśli ich nie masz, znajdź inne wpisy PATH, które mogą nadpisać %JAVA_HOME%\bin

wprowadź opis obrazu tutaj

  1. Klikaj „Przenieś w dół” dla nadpisanych wpisów, dopóki nie znajdą się poniżej %JAVA_HOME%\bin

%JAVA_HOME%\bin PATH, która wskazuje na Javę 8, będzie miała teraz wyższy priorytet niż inne wpisy PATH, które wskazują na JDK 11

wprowadź opis obrazu tutaj

  1. Zapisz i otwórz nowy terminal i uruchom
java -version

W moim przypadku wrócił:

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)

Naprawiony!

Nickson Yap
źródło
0
  1. Przejdź do strony głównej Panelu sterowania
  2. Zaawansowane ustawienia systemu
  3. Zmienne środowiska
  4. Wybierz JAVA_HOME
  5. edytować
  6. zmienna wartość dla 1,8
Salvin
źródło
0

Wygląda na to, że Android SDK nie obsługuje Javy 9. Zmień wersję na 8, jeśli nie chcesz wracać do JDK 1.8, co jest dla mnie śmieszne. JDK 8 działa dla mnie, ale pamiętaj, aby ustawić zmienną środowiskową JAVA_HOME na lokalizację instalacji JDK poprawnie.

Dgoldenone
źródło
0

Zgodnie z oficjalną dokumentacją Cordova obsługuje tylko JDK 1.8 nie większy do daty (kwiecień 2018) . Albo może występować problem ze skryptem wykrywania wersji w kordowie.

Cordova: Instalowanie wymagań

Abhay
źródło
0

Właśnie zmieniłem nazwę starszego folderu JDK na _, na wypadek, gdyby potrzebowałem go dalej, i zadziałało.

C:\Program Files (x86)\Java\_jdk1.7.0_40 
C:\Program Files (x86)\Java\_jre7
Livio
źródło
Na moim komputerze konfiguracja java i javac była niespójna: java wskazywała na JDK 9, a javac na JDK 8. Ustawienie obu na JDK 8 rozwiązało problem.
ominug
0

Używam windowsa i mam dwie wersje jdk 1.8 i 14 coś ...

Napotkałem ten sam problem i po pewnym debugowaniu znajdź rozwiązanie.

  1. ustaw poprawnie JAVA_HOME.
  2. Zmień wartość zmiennej użytkownika PATH na nową wersję jdk (1.8).
  3. Zmień wartość zmiennej użytkownika PATH na nową wersję jdk (1.8).

I to rozwiązane

Viplav Soni
źródło
0

Ubuntu / Debian Linux wersja tej odpowiedzi jest instalacja openjdk 8 i ustawić domyślne poprzezupdate-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
źródło