Używam Cordova 6.4.0 w systemie operacyjnym Windows 7, ale pojawia się ten błąd, gdy próbuję zbudować wersję Androida:
Zmienna Java Home jest poprawnie ustawiona na ścieżkę JDK, ale nie wiem, dlaczego pojawia się ten problem. Jakieś sugestie?
Odpowiedzi:
Odinstaluj wszystkie poprzednie JDK, w tym 1.8 Zainstaluj JDK 1.8
Add or Remove Programs/Program Features
w Windows OS
. Następnie usuń wszystkie poprzednie wersje Java. Miałem version 7
też zainstalowany i po uninstalling
nim cordova run android
działał. Powodzenia.
W systemie Linux (Debian / Ubuntu) można to rozwiązać, wybierając pakiet Java 1.8 SDK w
sudo update-alternatives --config javac
JAVA_HOME
Wydaje 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_HOME
zmiennej środowiskowej do określenia lokalizacji środowiska JRE. Zobacz ten i ten post, aby uzyskać więcej informacji.
java
ale nie javac
! Teraz nie ma potrzeby odinstalowywania Javy 9 :)
JAVA_HOME
wskazywał na prawy 1.8 JDK, tylko aktualizacja domyślnego systemu zadowalała Cordova.
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_HOME
zmienną USER (nie zmienną systemową), jak pokazano na poniższym obrazku.
W ten sposób nie musisz odinstalowywać wyższej wersji, a problem zostanie rozwiązany.
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.
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:
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:
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 'path
zmiennej środowiskowej.
Usunięcie ścieżki JDK starszej wersji ze 'path
zmiennej środowiskowej załatwiło sprawę. Mam nadzieję, że to też komuś pomoże.
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.
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. *.
MAC: przejdź do: / Library / Java / JavaVirtualMachines Upewnij się, że masz tylko jdk1.8.0_201.jdk Jeśli masz wiele, usuń inne JDK
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 :)
Chłopaki, aby uzyskać odpowiedni miks w systemie Windows , musisz wykonać następujące czynności
C:\Program Files\Java\jdk1.8.0_162
upewnij się, że nie dodajesz \bin
w wartości.;
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ąć.
Dzisiaj otrzymałem również ten błąd Cordova : Requirements check failed for JDK 1.8 or greater
w moim Mac OS podczas budowania aplikacji Ionic, kiedy uruchamiam polecenie ionic cordova build --release android
przez 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!
$ ls -l /Library/Java/JavaVirtualMachines/
$ ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin/javac /usr/local/bin/javac
$ 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/javac
nadal 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 ln
w górnej części tej odpowiedzi, działa dla mnie.
Ten komunikat o błędzie wprawia użytkownika w zakłopotanie, ekran sukcesu jak poniżej.
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".
Mam nadzieję, że pomoże rozwiązać problem, ale nie ponownie zainstaluj JDK.
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
Po prostu upewnij się, że te same wersje JDK (czyli w tym przypadku 1.8) są dostępne ze PATH
zmiennej środowiskowej i JAVA_HOME
. Przykład: Jeśli
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152
to
PATH
zmienna 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 PATH
zmiennej. Możesz odinstalować inne wersje, jeśli żadna inna aplikacja nie używa innej wersji java.
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**
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
Mam (Open) JDK 8 i 11 zainstalowane w systemie Windows 10 i miałem ten sam problem. U mnie zadziałało:
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 -version
w Windows cmd.exe:
$ java -version
java version "1.8.0_221"
ale wykonując java -version
w 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 -version
wyjściowe są identyczne w obu przypadkach.
Mam nadzieję, że to komuś pomoże!
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. *:
%JAVA_HOME%\bin
lubC:\Program Files\Java\jdk1.8.0_251\bin
%JAVA_HOME%\bin
PATH 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
%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
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!
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.
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.
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
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.
I to rozwiązane
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