Кордова: не удалось выполнить проверку требований для JDK 1.8 или выше


93

Я использую Cordova 6.4.0 в ОС Windows 7, но получаю эту ошибку, как только пытаюсь создать версию для Android:

Описание проблемы

Переменная Java Home правильно настроена на путь 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
Но что это значит? Как Cordova выбирает JDK, если установлены разные JDK. Может быть, у вас может быть только один JDK (например, машина для сборки)?
Bruno Ranschaert

вам все еще нужно установить переменные envionment, чтобы Кордова могла найти путь к вашему 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, похоже, не имеет никакого эффекта.

РЕДАКТИРОВАТЬ: ответ на комментарии: это, вероятно, как-то связано с тем фактом, что новые установки Java Debian (и, по-видимому, Ubuntu) через диспетчер пакетов не используют JAVA_HOMEпеременную окружения для определения местоположения JRE. См. Этот и этот пост для получения дополнительной информации.


1
Вы сделали мой день. Я все перепробовал за последние несколько дней. Tnx много. Но почему только это работает? Почему установка переменной не действует?
my-

1
У меня тоже работало на Ubuntu ... Я сделал это для, javaно нет javac! Теперь не нужно удалять Java 9 :)
hughjdavey

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

1
При выполнении sudo update-alternatives --config javac В группе ссылок javac есть только одна альтернатива (предоставляющая / usr / bin / javac): / usr / lib / jvm / java-11-openjdk-amd64 / bin / javac Ничего не настраивать . Мне нужно вернуться к java-8-openjdk, есть ли возможность это сделать?
Taieb

Почему это решение в ubuntu. Как и сказал myoan, почему обновление системы по умолчанию удовлетворило кордову?
Джитин

40

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

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

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

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


9
Не забудьте закрыть терминал / IDE, прежде чем пытаться снова запустить свои команды.
Daniel

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, но Cordova поддерживает только 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
Дара Ява

17

Удаление старых версий JDK сработало бы. Но я думаю, это может быть обходной путь. Я столкнулся с той же проблемой и заметил, что как новая версия JDK, так и путь JDK более старой версии были упомянуты в 'pathпеременной среды.

Удаление пути JDK старой версии из 'pathпеременной окружения помогло мне. Надеюсь, это тоже кому-то поможет.


если вы устанавливаете переменные среды, вы можете найти этот полезный материал superuser.com/questions/949560/…
Ивонн Абурроу,

Да, я могу запустить команду сборки с этим, но все еще борюсь с командой запуска 'ionic cordova run android', показывая ошибку INSTALL FAILED UPDATE INCOMPATIBLE.
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, а для Cordova нужен v1.8. * one.


Проверьте, на что указывает ваша переменная Path. У меня JAVA_HOME указывал на 1.8, но в Path он указывал на другую версию. Работал нормально после того, как я выровнял два!
ahb 04

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/"

перед сборкой кордовы, чтобы использовать конкретную версию jdk :)


3

Ребят, чтобы на винде получился микс , нужно сделать следующее

  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. cordova использует 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, когда я запускаю команду ionic cordova build --release androidчерез терминал.

Команда ниже решает мою проблему: -

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

Надеюсь, это поможет кому-то в будущем!


3

Ответ 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в верхней части этого ответа - это то, что сработало для меня.


2

Это сообщение об ошибке сбивает пользователя с толку, экран успеха показан ниже.Кордова добивается успеха

Сообщение об ошибке заставляет пользователя попытаться исправить сбой сборки с помощью конфигурации JAVA_HOME. Но настоящая проблема не только в JAVA_HOME.

Я исправляю эту проблему с помощью правильной конфигурации в JAVA_HOME и пути в «системной переменной». введите описание изображения здесь

Надеюсь, что поможет решить проблему, но не переустанавливает JDK.


2

Ответ, отправленный MadNeox, правильный. Я столкнулся с аналогичной проблемой, у меня был установлен jdk 9, а также версия 1.8

Сначала я попытался сохранить jdk 9 и удалить 1.8, он отобразит ошибку. Проверка требований не удалась.

Затем я попытался удалить jdk9 и переустановить 1. на этот раз он показывал, что не удалось запустить javac-version.

Поигравшись с переменными среды в течение некоторого времени, я наконец получил решение

На данный момент моя система имеет только версию 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.

измените свой globel JAVA_HOME env var на целевой JDK8 или вы можете изменить JAVA_HOME в powershell, прежде чем использовать Cordova CLI, если вы хотите использовать 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% вместо целевого java jdk (из ОС).

В моем случае (да, он старый, это старый проект кордовы ...)

выполнение 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 _, на всякий случай, если она мне понадобится, и это сработало.

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

Я использую окна и имею две версии 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.