Кордова: Не вдалося перевірити вимоги для JDK 1.8 або вище


93

Я використовую Cordova 6.4.0 в ОС Windows 7, але ця помилка з’являється, коли я намагався створити версію для Android:

Опис випуску

Домашня змінна Java налаштована правильно на шлях JDK, але я не знаю, чому я отримую цю проблему. Будь-які пропозиції, будь ласка?


3
В порядку. У мене була та сама проблема, але я не міг завантажити версію 1.8, оскільки вона схована під іншим ім'ям. Це 8u152. Через пару годин я знайшов його тут: oracle.com/technetwork/java/javase/downloads/…
user2367101

Відповіді:


58

Видаліть усі попередні JDK, включаючи 1.8 Встановіть JDK 1.8


3
@Urbycoz вам просто потрібно зайти Add or Remove Programs/Program Featuresв Windows OS. Далі видаліть усі попередні версії Java. У мене version 7також був встановлений і після uninstallingнього cordova run androidпрацював. Щасти.
Aakash

1
Але що це означає? Як Кордова вибирає JDK, якщо встановлені різні JDK. Не може бути, що ви можете мати лише один JDK (наприклад, побудувати машину)?
Бруно Раншаерт,

вам все-таки потрібно встановити змінні середовища, щоб Кордова могла знайти шлях до вашого JDK superuser.com/questions/949560/…
Івонн Еброу

19
Видалення іншої версії @MadNeox є лише обхідним шляхом, а не рішенням
Ганді

зробив трюк для мене. перейшов на appwiz.cpl (з windows cmd) і видалив java 7 та java sdk 7.
Ortiz

53

У Linux (Debian / Ubuntu) це можна вирішити, вибравши Java 1.8 SDK в

sudo update-alternatives --config javac

Зміна JAVA_HOMEзмінної env безпосередньо, здається, не має жодного ефекту.

EDIT: відповідь на коментарі: Це, мабуть, пов’язано з тим, що нові установки Debian (і, мабуть, Ubuntu) Java через менеджер пакетів не використовують JAVA_HOMEзмінну середовища для визначення розташування JRE. Дивіться цей і цей допис для отримання додаткової інформації.


1
Ти мене вразив. Я спробував все за останні кілька днів. Tnx багато. Але чому тільки це працює? Чому встановлення змінної не впливає?
мій-

1
Працював у мене теж на Ubuntu ... Я це зробив, javaале ні javac! Тепер не потрібно видаляти Java 9 :)
hughjdavey

Те саме зауваження тут. Хоча JAVA_HOMEвказував на правий 1.8 JDK, лише оновлення системи за замовчуванням задовольнило Кордову.
myoan

1
При виконанні sudo update-alternative --config javac У групі посилань javac є лише одна альтернатива (надання / usr / bin / javac): / usr / lib / jvm / java-11-openjdk-amd64 / bin / javac Немає чого налаштовувати . мені потрібно повернутися до java-8-openjdk чи є там, щоб це зробити?
Taieb

Чому це рішення в ubuntu. Так само, як сказав Myoan, чому оновлення системи за замовчуванням задовольняє Кордову?
Jithin

40

Вам не потрібно видаляти будь-яку вищу версію sdk. просто встановіть jdk1.8.0_161 або ні, якщо він уже встановлений.

Тепер просто встановіть JAVA_HOMEзмінну USER (не системну змінну), як показано на малюнку нижче.

введіть тут опис зображення

Таким чином вам не потрібно видаляти вищу версію, і проблема вирішується.


9
Не забудьте закрити термінал / IDE, перш ніж повторно запускати свої команди.
Даніель

1
або ви можете просто запустити $. ~ / .bashrc, щоб знову експортувати змінні env
Нік Куевас,

33

Що працювало, це видалення jdk 9 та перевстановлення jkd 8.x

На Mac для видалення перейдіть до терміналу та виконайте такі дії:

cd /Library/Java/JavaVirtualMachines

sudo rm -rf jdk-9.0.1.jdk

Потім встановіть jdk 8.x, завантаживши пакет .dmg з Oracle.



23

У вас може бути версія, що перевищує 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- Оновіть свої змінні середовища:

  • JAVA_HOME, якщо ви встановили JDK
  • JRE_HOME, якщо ви встановили JRE

вказавши їм місце, де були встановлені 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

Відкрийте новий сеанс терміналу та запустіть команду, яка не вдалася. Це повинно працювати зараз.

Не працює?

Якщо це не вдасться з інших причин, можливий процес налагодження:

  • Переконайтеся, що змінні JAVA_HOME і JRE_HOME є системними змінними.
  • Переконайтеся, що вони додані до шляху вашого користувача Додайте змінні до шляху

Це була єдина правильна відповідь для мене. Див. Це посилання для отримання додаткової інформації evothings.com/doc/build/cordova-install-linux.html
Dara Java

17

Видалення старих версій JDK могло б спрацювати. Але це, можливо, обхідний шлях. Я зіткнувся з тією ж проблемою і помітив, що як нова версія JDK, так і старіша версія шляху JDK були згадані в 'path"змінній середовища.

Видалення старшої версії JDK-шляху зі 'pathзмінної середовища зробило для мене фокус. Сподіваюся, це теж комусь допоможе.


якщо ви встановлюєте змінні середовища, ви можете знайти цей корисний superuser.com/questions/949560/…
Yvonne Aburrow

Так, я можу запустити команду збірки з цим, але все ще борюся з командою запуску "ionic cordova run android", показуючи помилку ВСТАНОВЛЕННЯ ПОМИЛКИ ОНОВЛЕННЯ НЕСУМІСНИМ.
supriya chauhan

@supriyachauhan, ти можеш спробувати перевстановити всі речі заново. В іншому випадку вам може знадобитися надати детальні деталі, щоб звузити проблему
Ганді

9

Я з'ясував, що мій змінний середовища шляху вказував на java 1.7, тоді як JAVA_HOME вказував на 1.8, тому я відредагував змінну шляху до 1.8, і мені було добре.


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.


Перевірте, куди вказує змінна Path. У мене був JAVA_HOME, який вказував на 1.8, але в Path він вказував на іншу версію. Попрацював нормально після того, як я вирівняв ці два!
ahb

6

MAC: Перейдіть до: / Library / Java / JavaVirtualMachines Переконайтеся, що у вас є лише jdk1.8.0_201.jdk Якщо їх багато, видаліть інші JDK


5

Я згоден з @Hozington. Це має бути помилка коду Кордови виявлення версії Java. Що я зробив:

  1. Зберігайте JDK 10
  2. Встановіть JDK 8
  3. Змініть JAVA_HOMEшлях на JDK 8, а також зміну pathзмінної.
  4. перезапустіть "cmd" і запустіть cordova buildзнову.

І помилка зникла!


4

якщо у вас багато версій JDK, ви можете запустити

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

перед побудовою cordova, щоб використовувати певну версію jdk :)


4

Відповідь MacOS із встановленими декількома версіями Java і не потрібно видаляти

Покажіть, які версії Java я встановив:

$ ls -l /Library/Java/JavaVirtualMachines/

Щоб встановити його на мою версію jdk1.8:

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

Щоб встановити його на мою версію jdk11:

$ 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, вгорі цієї відповіді, спрацювала для мене.


3

Хлопці, щоб отримати суміш прямо в Windows , вам потрібно зробити наступне

  1. Завантажте та встановіть будь-яку версію JDK 1.8 або новішої.
  2. Відкрийте змінні середовища, створіть змінну середовища під назвою JAVA_HOME і встановіть значення на шлях встановлення JDK. C:\Program Files\Java\jdk1.8.0_162 не додайте значення \binу значення.

введіть тут опис зображення

  1. У вашій змінній системного шляху поставте крапку з комою ;та додайте це значення до системного шляху, наприклад, C:\Program Files\Java\jdk1.8.0_162\bin;тут \binдодано.

Примітка: Змінні середовища складні. Вони повинні бути закриті знаком ; перед відкриттям іншого. Ось чому ми ставимо один перед додаванням значення і один після значення, щоб закрити його.

введіть тут опис зображення

  1. Тепер закрийте термінал і знову відкрийте його, а потім запустіть попередні команди.

є поєднання адреси Java ... від JAVA_HOME, PATH. Кордова використовує PATH, який, можливо, вказує на java12 / 13
bortunac

3

Іноді зміна шляху і java-homeне працює. Вам потрібно додати

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

до змінної екологічної траєкторії.


3

Сьогодні я також отримав цю помилку 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"

Сподіваюся, це допоможе комусь у майбутньому!


2

Це повідомлення про помилку вводить користувача в оману, екран успіху, як показано нижче.Кордова побудувати успіх

Повідомлення про помилку змушує користувача намагатися виправити помилку збірки за допомогою конфігурації JAVA_HOME. Але справжня проблема полягає не тільки в JAVA_HOME.

Я виправляю цю проблему за допомогою правильної конфігурації в JAVA_HOME та шляху у "системній змінній". введіть тут опис зображення

Надія може допомогти вирішити проблему, але не перевстановити JDK.


2

Відповідь, опублікована 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)

Це має вирішити вашу проблему. Сподіваюся, це допоможе

Хоча відповідь уже була дана, мені знадобився деякий час, щоб зрозуміти, де я помиляюся, тому вирішив опублікувати цю надію, сподіваючись, що це заощадить чужий час


1

Просто переконайтеся, що ті самі версії JDK (тобто 1.8 у цьому випадку) доступні із PATHзмінної середовища та JAVA_HOME. Приклад: Якщо JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152тоді PATHзмінна також повинна містити вказаний вище шлях і, що важливо, перед будь-яким (якщо такий є) іншим шляхом, якщо JDK / JRE вже згаданий у PATHзмінній. Ви можете видалити інші версії, якщо жодна інша програма не використовує іншу версію Java.


1

Якщо у вас встановлені як 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**

1

якщо у вас встановлено кілька версій Java і вам потрібно їх зберегти, вам потрібно перевірити такі речі:

  • JAVA_HOME вказує на ваш jdk1.8
  • у вашій змінній PATH вам потрібно перевірити, що шлях jdk1.8 \ bin стоїть перед іншими шляхами jdk \ bin

1

Я зіткнувся з тією ж проблемою з jdk1.8.0_201. Вона була вирішена, коли я створив JAVA_HOME = C: \ Program Files \ Java \ jdk1.8.0_201 і додав "C: \ Program Files \ Java \ jdk1.8.0_201 \ bin" в змінна шляху


1

У мене (Open) JDK 8 і 11 встановлено в Windows 10, і у мене була та ж проблема. Для мене працювало:

  1. Встановіть JAVA_HOME вказувати на JDK 8. (Згаданий у багатьох відповідях раніше.) І
  2. Видаліть (!) JDK 11 з PATH, оскільки виявилося, що - хоча відображаючи шлях JAVA_HOME, що вказує на JDK 8 - Кордова фактично отримала доступ до JDK 11, який був включений до PATH, що призвело до невдалої перевірки версії Java.

1

Це старе запитання, але оскільки у мене просто була та сама проблема, але помилка мала інше джерело, тут коротка відповідь.

Вирішено проблему в 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 вихідний результат ідентичний в обох випадках.

Сподіваюся, це комусь допоможе!


1

Помилка виникає, коли за замовчуванням шлях до 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. *:

  1. Переконайтеся, що встановлені JAVA_HOME і JRE_HOME (переконайтеся, що вони вказують на Java 1.8. *)

Змінна env

  1. Усередині PATH, Переконайтеся %JAVA_HOME%\binабо C:\Program Files\Java\jdk1.8.0_251\binдоданий

введіть тут опис зображення

  1. Джерело проблеми: Моя установка JDK 11 додала два записи PATH прямо вгорі, маючи перевагу або перевизначивши %JAVA_HOME%\binPATH, який вказує на JDK 1.8. *

Не додавайте їх, якщо їх у вас немає, знайдіть інші записи PATH, які можуть замінити %JAVA_HOME%\bin

введіть тут опис зображення

  1. Клацніть «Перемістити вниз» для основних записів, поки вони не будуть нижче %JAVA_HOME%\bin

%JAVA_HOME%\bin PATH, який вказує на Java 8, тепер матиме пріоритет над іншими записами PATH, що вказує на JDK 11

введіть тут опис зображення

  1. Збережіть і відкрийте новий термінал і запустіть
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)

Виправлено!


0
  1. Перейдіть на панель керування додому
  2. Розширені налаштування системи
  3. Змінні середовища
  4. Виберіть JAVA_HOME
  5. редагувати
  6. значення змінної для одиниці 1,8

0

Здається, Android SDK не підтримує Java 9. Перейдіть на 8, якщо ви не хочете повертатися до JDK 1.8, що для мене смішно. JDK 8 працює для мене, але переконайтеся, що ви правильно встановили змінну середовища JAVA_HOME для розташування вашої інсталяції JDK.


0

Відповідно до офіційної документації Кордови, він підтримує лише JDK 1,8, що не перевищує дату (квітень 2018 р . ) . Або може бути проблема зі сценарієм виявлення версій в межах Кордова.

Кордова: Встановлення вимог


0

Я просто перейменував стару папку JDK на _, про всяк випадок, якщо вона мені знадобиться далі, і вона спрацювала.

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

На моїй машині конфігурація java та javac була суперечливою: java вказував на JDK 9, тоді як javac вказував на JDK 8. Установка обох на JDK 8 усувала проблему.
ominug

0

Я використовую windows і маю дві версії jdk 1.8 та 14 щось ...

Зіткнувся з тією ж проблемою і після налагодження знайшов рішення.

  1. правильно встановити JAVA_HOME.
  2. Змініть значення змінної користувача PATH за допомогою нової версії jdk (1.8).
  3. Змініть значення змінної користувача PATH за допомогою нової версії jdk (1.8).

І це вирішено


0

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.