Я использую Cordova 6.4.0 в ОС Windows 7, но получаю эту ошибку, как только пытаюсь создать версию для Android:
Переменная Java Home правильно настроена на путь 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, похоже, не имеет никакого эффекта.
РЕДАКТИРОВАТЬ: ответ на комментарии: это, вероятно, как-то связано с тем фактом, что новые установки Java Debian (и, по-видимому, Ubuntu) через диспетчер пакетов не используют JAVA_HOME
переменную окружения для определения местоположения JRE. См. Этот и этот пост для получения дополнительной информации.
java
но нет javac
! Теперь не нужно удалять Java 9 :)
JAVA_HOME
указывал на правый 1.8 JDK, Кордова удовлетворила только обновление системы по умолчанию.
Вам не нужно удалять какую-либо более позднюю версию sdk. просто установите jdk1.8.0_161 или не устанавливайте, если он уже установлен.
Теперь просто установите JAVA_HOME
переменную USER (не системную переменную), как показано на изображении ниже.
Таким образом, вам не нужно удалять более новую версию, и проблема будет решена.
Что сработало, так это удаление jdk 9 и переустановка jkd 8.x
На Mac для удаления перейдите в терминал и выполните следующие действия:
cd /Library/Java/JavaVirtualMachines
sudo rm -rf jdk-9.0.1.jdk
Затем установите jdk 8.x, загрузив пакет .dmg из Oracle.
У вас может быть версия старше 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- Обновите переменные среды:
указав им место, где были установлены 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_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.
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/"
перед сборкой кордовы, чтобы использовать конкретную версию jdk :)
Ребят, чтобы на винде получился микс , нужно сделать следующее
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, когда я запускаю команду ionic cordova build --release android
через терминал.
Команда ниже решает мою проблему: -
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home"
Надеюсь, это поможет кому-то в будущем!
$ 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
в верхней части этого ответа - это то, что сработало для меня.
Это сообщение об ошибке сбивает пользователя с толку, экран успеха показан ниже.
Сообщение об ошибке заставляет пользователя попытаться исправить сбой сборки с помощью конфигурации JAVA_HOME. Но настоящая проблема не только в JAVA_HOME.
Я исправляю эту проблему с помощью правильной конфигурации в JAVA_HOME и пути в «системной переменной».
Надеюсь, что поможет решить проблему, но не переустанавливает JDK.
Ответ, отправленный 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)
Это должно решить вашу проблему. Надеюсь, это поможет.
Хотя ответ уже был дан, мне потребовалось некоторое время, чтобы понять, где я ошибаюсь, поэтому решил опубликовать его, надеясь, что это сэкономит чужое время.
Просто убедитесь, что те же версии 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.
измените свой 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**
Я столкнулся с той же проблемой с 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% вместо целевого 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
результат в обоих случаях идентичен.
Надеюсь, это кому-то поможет!
Ошибка возникает, когда для пути по умолчанию к 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%\bin
PATH, который указывает на 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)
Исправлена!
Кажется, что Android SDK не поддерживает Java 9. Понизьте версию до 8, если вы не хотите полностью возвращаться к JDK 1.8, что для меня смешно. JDK 8 работает для меня, но обязательно правильно установите переменную среды JAVA_HOME в место установки JDK.
Согласно официальной документации Cordova, он поддерживает только JDK 1.8 не старше даты (апрель 2018 г.) . Или может быть проблема со скриптом определения версии в кордове.
Я просто переименовал старую папку JDK _
, на всякий случай, если она мне понадобится, и это сработало.
C:\Program Files (x86)\Java\_jdk1.7.0_40
C:\Program Files (x86)\Java\_jre7
Я использую окна и имею две версии 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