Я використовую Cordova 6.4.0 в ОС Windows 7, але ця помилка з’являється, коли я намагався створити версію для Android:
Домашня змінна Java налаштована правильно на шлях JDK, але я не знаю, чому я отримую цю проблему. Будь-які пропозиції, будь ласка?
Відповіді:
Видаліть усі попередні JDK, включаючи 1.8 Встановіть JDK 1.8
Add or Remove Programs/Program Featuresв Windows OS. Далі видаліть усі попередні версії Java. У мене version 7також був встановлений і після uninstallingнього cordova run androidпрацював. Щасти.
У Linux (Debian / Ubuntu) це можна вирішити, вибравши Java 1.8 SDK в
sudo update-alternatives --config javac
Зміна JAVA_HOMEзмінної env безпосередньо, здається, не має жодного ефекту.
EDIT: відповідь на коментарі: Це, мабуть, пов’язано з тим, що нові установки Debian (і, мабуть, Ubuntu) Java через менеджер пакетів не використовують JAVA_HOMEзмінну середовища для визначення розташування JRE. Дивіться цей і цей допис для отримання додаткової інформації.
javaале ні javac! Тепер не потрібно видаляти Java 9 :)
JAVA_HOMEвказував на правий 1.8 JDK, лише оновлення системи за замовчуванням задовольнило Кордову.
Що працювало, це видалення jdk 9 та перевстановлення jkd 8.x
На Mac для видалення перейдіть до терміналу та виконайте такі дії:
cd /Library/Java/JavaVirtualMachines
sudo rm -rf jdk-9.0.1.jdk
Потім встановіть jdk 8.x, завантаживши пакет .dmg з Oracle.
У вас може бути версія, що перевищує 8, але Кордова підтримує лише JDK 1.8. Переглянути це посилання Кордова документація
Я подивився фрагмент коду, який фактично перевіряє номер версії вашого Java. Шукайте таке: module.exports.check_java у платформах / android / cordova / lib / check_reqs.js . на рядку 220. Ви побачите регулярний вираз і коментар, залишений командою, що Java 10 буде підтримуватися в майбутньому.
Існуючий регулярний вираз не вдасться, коли він буде запущений проти останніх версій Java, таких як Java 10. Це відбувається тому, що Java 8 або 9 зберігаються у такому форматі: 1. [8-9]. **, але Java 10 зберігається як 10. **, а регулярний вираз шукає версію у форматі 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);
Моє рішення:
Вам не потрібно видаляти свою поточну версію JRE або JDK, оскільки інсталятор встановлює кожну версію у певній папці.
1- Встановити версію Java 8 Перейдіть за цим посиланням
2- Оновіть свої змінні середовища:
вказавши їм місце, де були встановлені JRE 8 та 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
Відкрийте новий сеанс терміналу та запустіть команду, яка не вдалася. Це повинно працювати зараз.
Не працює?
Якщо це не вдасться з інших причин, можливий процес налагодження:
Видалення старих версій JDK могло б спрацювати. Але це, можливо, обхідний шлях. Я зіткнувся з тією ж проблемою і помітив, що як нова версія JDK, так і старіша версія шляху JDK були згадані в 'path"змінній середовища.
Видалення старшої версії JDK-шляху зі 'pathзмінної середовища зробило для мене фокус. Сподіваюся, це теж комусь допоможе.
Я з'ясував, що мій змінний середовища шляху вказував на java 1.7, тоді як JAVA_HOME вказував на 1.8, тому я відредагував змінну шляху до 1.8, і мені було добре.
у моєму випадку вказував JAVA_HOME C: \ Program Files (x86) \ Java \ jdk1.7.0_55
коли я писав, де java в cmd, він видав C: \ Program Files (x86) \ Java \ jdk1.7.0_55 разом із шляхом java.exe, я змінив змінну JAVA_HOME із змінних середовища на C: \ Program Files \ Java \ jdk1.8.0_20, і він спрацював, тому, здається, у мене було 2 екземпляри jdk, а Кордова потребує v1.8.
MAC: Перейдіть до: / Library / Java / JavaVirtualMachines Переконайтеся, що у вас є лише jdk1.8.0_201.jdk Якщо їх багато, видаліть інші JDK
якщо у вас багато версій JDK, ви можете запустити
export JAVA_HOME="/usr/local/env/java/jdk1.8.0_131.jdk/Contents/Home/"
перед побудовою cordova, щоб використовувати певну версію jdk :)
$ 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
Зверніть увагу, що, незважаючи на те, що сказано в повідомленні, здається, це означає, що він хоче версію 1.8, і видає це повідомлення, якщо у вас є пізніший версія.
Далі йдеться про мої попередні спроби, які приводять мене до наведеної вище відповіді, яка потім спрацювала ... Можливо, вам доведеться зробити щось інше залежно від того, що встановлено, тож, можливо, ці примітки можуть допомогти:
Встановіть його на мою версію jdk1.8
$ export PATH=/Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home/bin/javac:$PATH
Встановіть його на мою версію jdk11
$ export PATH=/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin/javac:$PATH
... але насправді це не працює, тому що /usr/bin/javacвсе-таки першим запускається:
$ which javac
/usr/bin/javac
... щоб побачити, що першим проходить по шляху:
$ cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Це означає, що я можу перевизначити /usr/bin/javac... див. Команди у верхній частині відповіді ...
Команда, щоб встановити його на jdk1.8, використовуючи ln, вгорі цієї відповіді, спрацювала для мене.
Хлопці, щоб отримати суміш прямо в Windows , вам потрібно зробити наступне
C:\Program Files\Java\jdk1.8.0_162
не додайте значення \binу значення.;та додайте це значення до системного шляху, наприклад, C:\Program Files\Java\jdk1.8.0_162\bin;тут \binдодано.Примітка: Змінні середовища складні. Вони повинні бути закриті знаком ; перед відкриттям іншого. Ось чому ми ставимо один перед додаванням значення і один після значення, щоб закрити його.
Сьогодні я також отримав цю помилку Cordova : Requirements check failed for JDK 1.8 or greaterв своїй Mac OS під час створення Ionic App, коли я запускаю командуionic cordova build --release android через термінал.
Нижче команда вирішити мою проблему: -
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home"
Сподіваюся, це допоможе комусь у майбутньому!
Це повідомлення про помилку вводить користувача в оману, екран успіху, як показано нижче.
Повідомлення про помилку змушує користувача намагатися виправити помилку збірки за допомогою конфігурації JAVA_HOME. Але справжня проблема полягає не тільки в JAVA_HOME.
Я виправляю цю проблему за допомогою правильної конфігурації в JAVA_HOME та шляху у "системній змінній".

Надія може допомогти вирішити проблему, але не перевстановити JDK.
Відповідь, опублікована MadNeox, є правильною. Я зіткнувся з подібною проблемою, коли встановив jdk 9, а також версію 1.8
Спочатку я спробував, збереживши jdk 9 і видаливши 1.8, і відобразиться помилка перевірки вимог
Потім я спробував видалити jdk9 і перевстановити 1. на цей раз він показував, що не вдалося запустити javac-версію
Погравшись зі змінними середовища протягом деякого часу, я нарешті отримав рішення
На даний момент у моїй системі є лише версія jdk 1.8 Cordova: 7.1.0
-Відкрити вкладку змінних середовища -Під користувальницькими змінними створити нову змінну PATH -надати їй таке значення C: \ Program Files \ Java \ jdk1.8.0_151 \ bin (може змінюватися залежно від того, де ви встановили ваш jdk)
Це має вирішити вашу проблему. Сподіваюся, це допоможе
Хоча відповідь уже була дана, мені знадобився деякий час, щоб зрозуміти, де я помиляюся, тому вирішив опублікувати цю надію, сподіваючись, що це заощадить чужий час
Просто переконайтеся, що ті самі версії JDK (тобто 1.8 у цьому випадку) доступні із PATHзмінної середовища та JAVA_HOME. Приклад: Якщо
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152тоді
PATHзмінна також повинна містити вказаний вище шлях і, що важливо, перед будь-яким (якщо такий є) іншим шляхом, якщо JDK / JRE вже згаданий у PATHзмінній. Ви можете видалити інші версії, якщо жодна інша програма не використовує іншу версію Java.
Якщо у вас встановлені як jdk8, так і jdk9, вам слід перевірити, яка версія
у шляху та куди вказує JAVA_HOME.
У журналі, яке ви розмістили, я бачу, що JAVA_HOME веде до JDK9.
змініть свій глобальний JAVA_HOME env var на цільовий JDK8, або ви можете змінити JAVA_HOME в PowerShell перед тим, як використовувати CLOVA Cordova, якщо ви хочете використовувати jdk8 лише для Cordova:
$env:JAVA_HOME="C:\Program Files\Java\jdk1.8.0_151"
**cordova build android**
Я зіткнувся з тією ж проблемою з jdk1.8.0_201. Вона була вирішена, коли я створив JAVA_HOME = C: \ Program Files \ Java \ jdk1.8.0_201 і додав "C: \ Program Files \ Java \ jdk1.8.0_201 \ bin" в змінна шляху
У мене (Open) JDK 8 і 11 встановлено в Windows 10, і у мене була та ж проблема. Для мене працювало:
Це старе запитання, але оскільки у мене просто була та сама проблема, але помилка мала інше джерело, тут коротка відповідь.
Вирішено проблему в Windows (лише) та в IDE Webstorm 2019.2
У версії 2019.2 Webstorm виникла проблема, оскільки вона внутрішньо використовувала відкритий jdk для змінної% JAVA_HOME% замість jdk (з os)
У моєму випадку (так, це старий, це старий проект Кордови ...)
виконуються java -versionв Windows cmd.exe:
$ java -version
java version "1.8.0_221"
але виконується java -versionв терміналі Webstorms:
$ java -version
openjdk version "11.0.3" 2019-04-16
// more output
Виправлення надійшло з виправленням, випущеним пізніше (сьогодні), версія 2019.2.1. Тепер Webstorm використовує змінну os% JAVA_HOME% як слід іjava -version вихідний результат ідентичний в обох випадках.
Сподіваюся, це комусь допоможе!
Помилка виникає, коли за замовчуванням шлях до Java встановлено на іншу версію, ніж Java 8 або JDK 1.8. *
Для мого випадку я встановив Java 11 після встановлення Java 8
Ви можете перевірити, запустивши:
java -version
Для мого випадку він повернувся:
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)
Щоб це виправити, нам потрібно переконатися, що шлях Java спрямований на бінарні файли Java 8
Припускаючи, що у вас вже встановлена Java 8 або JDK 1.8. *:
%JAVA_HOME%\binабо C:\Program Files\Java\jdk1.8.0_251\binдоданий%JAVA_HOME%\binPATH, який вказує на JDK 1.8. *Не додавайте їх, якщо їх у вас немає, знайдіть інші записи PATH, які можуть замінити %JAVA_HOME%\bin
%JAVA_HOME%\bin%JAVA_HOME%\bin PATH, який вказує на Java 8, тепер матиме пріоритет над іншими записами PATH, що вказує на JDK 11
java -version
Для мого випадку він повернувся:
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)
Виправлено!
Відповідно до офіційної документації Кордови, він підтримує лише JDK 1,8, що не перевищує дату (квітень 2018 р . ) . Або може бути проблема зі сценарієм виявлення версій в межах Кордова.
Я просто перейменував стару папку JDK на _, про всяк випадок, якщо вона мені знадобиться далі, і вона спрацювала.
C:\Program Files (x86)\Java\_jdk1.7.0_40
C:\Program Files (x86)\Java\_jre7
Я використовую windows і маю дві версії jdk 1.8 та 14 щось ...
Зіткнувся з тією ж проблемою і після налагодження знайшов рішення.
І це вирішено
Ubuntu / Debian Linux версії цієї відповіді полягає в установці OpenJDK 8 і встановити за замовчуванням з допомогоюupdate-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