Cordova: échec de la vérification des exigences pour JDK 1.8 ou supérieur

93

J'utilise Cordova 6.4.0 dans le système d'exploitation Windows 7, mais j'obtiens cette erreur une fois que j'ai essayé de créer la version Android:

Description du problème

La variable Java Home est correctement définie sur le chemin JDK, mais je ne sais pas pourquoi j'obtiens ce problème. Des suggestions s'il vous plaît?

MadNeox
la source
3
D'accord. J'ai eu le même problème, mais je n'ai pas pu télécharger la version 1.8 car elle se cache sous un autre nom. C'est le 8u152. Après quelques heures, je l'ai trouvé ici: oracle.com/technetwork/java/javase/downloads
...

Réponses:

58

Désinstaller tous les JDK précédents, y compris 1.8 Installer JDK 1.8

MadNeox
la source
3
@Urbycoz vous avez juste besoin d'aller Add or Remove Programs/Program Featuresdans Windows OS. Ensuite, supprimez toutes les versions précédentes de Java. J'avais version 7également installé et après uninstallingcela, j'ai cordova run androidtravaillé. Bonne chance.
Aakash
1
Mais qu'est-ce que ça veut dire? Comment cordova sélectionne-t-il le JDK si différents JDK sont installés? Il n'est pas possible que vous ne puissiez avoir qu'un seul JDK (par exemple, construire une machine)?
Bruno Ranschaert
vous devez encore définir les variables d'environnement afin que Cordova puisse trouver le chemin vers votre superuser JDK.com/questions/949560/...
Yvonne Aburrow
19
@MadNeox désinstaller une autre version est juste une solution de contournement pas la solution
Gandhi
a fait l'affaire pour moi. allé à appwiz.cpl (à partir de Windows cmd) et supprimé java 7 et java sdk 7.
Ortiz
53

Sous Linux (Debian / Ubuntu), cela peut être résolu en sélectionnant un SDK Java 1.8 dans

sudo update-alternatives --config javac

Changer JAVA_HOMEdirectement la variable env ne semble pas avoir d'effet.

EDIT: répondre aux commentaires: Cela a probablement quelque chose à voir avec le fait que les nouvelles installations Java Debian (et apparemment Ubuntu) via le gestionnaire de paquets n'utilisent pas la JAVA_HOMEvariable d'environnement pour déterminer l'emplacement du JRE. Voir ceci et ce post pour plus d'informations.

oseiskar
la source
1
Tu as fait ma journée. J'ai tout essayé ces derniers jours. Merci beaucoup. Mais pourquoi cela fonctionne seulement? Pourquoi définir une variable n'a aucun effet?
my-
1
A travaillé pour moi aussi sur Ubuntu ... Je l'avais fait pour javamais pas javac! Maintenant, pas besoin de désinstaller Java 9 :)
hughjdavey
Même remarque ici. Bien que JAVA_HOMEpointant vers la droite 1.8 JDK, seule la mise à jour du système par défaut satisfait Cordova.
myoan
1
Lors de l'exécution de sudo update-alternatives --config javac Il n'y a qu'une seule alternative dans le groupe de liens javac (fournissant / usr / bin / javac): / usr / lib / jvm / java-11-openjdk-amd64 / bin / javac Rien à configurer . je dois retourner à java-8-openjdk est-ce que je peux le faire?
Taieb
Pourquoi c'est une solution dans ubuntu. Tout comme myoan l'a dit, pourquoi mettre à jour le système par défaut satisfait cordova?
Jithin
40

Vous n'avez pas besoin de désinstaller une version supérieure de sdk. installez simplement jdk1.8.0_161 ou ne le faites pas s'il est déjà installé.

Maintenant, définissez simplement la JAVA_HOMEvariable USER (et non la variable système) comme indiqué dans l'image ci-dessous.

entrez la description de l'image ici

De cette façon, vous n'avez pas à désinstaller la version supérieure et le problème est résolu.

Rashmin Javiya
la source
9
N'oubliez pas de fermer le terminal / IDE avant d'essayer d'exécuter à nouveau vos commandes.
Daniel
1
ou vous pouvez simplement exécuter $. ~ / .bashrc pour exporter à nouveau les variables d'environnement
Nick Cuevas
33

Ce qui fonctionnait, c'était la désinstallation de jdk 9 et la réinstallation de jkd 8.x

Sur Mac, pour désinstaller, accédez au terminal et procédez comme suit:

cd /Library/Java/JavaVirtualMachines

sudo rm -rf jdk-9.0.1.jdk

Ensuite, installez le jdk 8.x en téléchargeant le package .dmg à partir d'Oracle.

Bandito11
la source
23

Vous pouvez avoir une version supérieure à 8 mais Cordova ne prend en charge que le JDK 1.8. Voir ce lien Documentation Cordova

J'ai jeté un coup d'œil au morceau de code qui vérifie réellement le numéro de version de votre java. Recherchez les éléments suivants: module.exports.check_java dans les plates-formes / android / cordova / lib / check_reqs.js . à la ligne 220. Vous verrez une expression régulière et un commentaire laissé par l'équipe que Java 10 sera pris en charge à l'avenir.

L'expression régulière existante échouera lorsqu'elle est exécutée sur les dernières versions de java telles que Java 10. C'est parce que Java 8 ou 9 sont enregistrés au format suivant: 1. [8-9]. ** mais Java 10 est enregistré comme 10. ** et l'expression régulière recherche une version au format 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);

Ma solution:

Vous n'avez pas besoin de désinstaller votre version actuelle du JRE ou du JDK puisque le programme d'installation installe chaque version dans un dossier spécifique.

1- Installer la version Java 8 Suivez ce lien

2- Mettez à jour vos variables d'environnement:

  • JAVA_HOME si vous avez installé le JDK
  • JRE_HOME si vous avez installé le JRE

en les pointant vers l'emplacement où les JRE 8 et JDK 8 ont été installés.

// On my machine   
C:\Program Files\Java\jdk1.8.0_171 // JAVA_HOME
C:\Program Files\Java\jre1.8.0_171 // JRE_HOME

Ouvrez une nouvelle session de terminal et exécutez la commande qui a échoué. Cela devrait fonctionner maintenant.

N'a pas marché?

En cas d'échec pour d'autres raisons, processus de débogage possible:

  • Assurez-vous que les variables JAVA_HOME et JRE_HOME sont des variables système.
  • Assurez-vous qu'ils sont ajoutés au chemin de votre utilisateur Ajouter des variables au chemin
Gloire
la source
C'était la seule bonne réponse pour moi. Voir ce lien pour plus d'informations evothings.com/doc/build/cordova-install-linux.html
Dara Java
17

La désinstallation d'anciennes versions de JDK aurait fonctionné. Mais cela peut être une solution de contournement, je suppose. J'ai rencontré le même problème et j'ai remarqué que la nouvelle version de JDK et l'ancienne version du chemin JDK ont été mentionnées dans 'path'variable environnementale.

La suppression du chemin JDK de l'ancienne version de 'pathla variable d'environnement a fait l'affaire pour moi. J'espère que ça aide quelqu'un aussi.

Gandhi
la source
si vous définissez des variables d'environnement, vous trouverez peut-être ce superuser.com/questions/949560/...
Yvonne Aburrow
Oui, je suis capable d'exécuter la commande de construction avec cela, mais j'ai toujours du mal avec la commande d'exécution 'ionic cordova run android', affichant l'erreur INSTALL FAILED UPDATE INCOMPATIBLE.
supriya chauhan
@supriyachauhan, vous pouvez essayer de réinstaller le contenu complet une fois de plus. Sinon, vous devrez peut-être fournir des détails élaborés pour affiner le problème
Gandhi
9

J'ai découvert que ma variable d'environnement path pointait vers java 1.7 alors que JAVA_HOME pointait vers 1.8, j'ai donc édité la variable path sur 1.8 et ça allait.

Iyke Perry
la source
8

dans mon cas, JAVA_HOME pointait vers C: \ Program Files (x86) \ Java \ jdk1.7.0_55

quand j'ai écrit où java dans cmd il a généré C: \ Program Files (x86) \ Java \ jdk1.7.0_55 avec le chemin java.exe, j'ai changé la variable JAVA_HOME des variables d'environnement en C: \ Program Files \ Java \ jdk1.8.0_20 & cela a fonctionné, donc il semble que j'ai eu 2 instances jdk et cordova a besoin de la version v1.8. *.

Mawardy
la source
Vérifiez où pointe votre variable Path. J'avais JAVA_HOME pointant vers 1.8 mais dans Path, il indiquait une version différente. A bien fonctionné après avoir aligné les deux!
ahb
6

MAC: Accédez à: / Library / Java / JavaVirtualMachines Assurez-vous que vous n'avez que jdk1.8.0_201.jdk Si vous en avez plusieurs, supprimez les autres JDK

Shelly Pritchard
la source
5

Je suis d'accord avec @Hozington. Cela devrait être le bogue sur le code Cordova de détection de la version Java. Ce que j'ai fait c'est:

  1. Gardez le JDK 10
  2. Installez le JDK 8
  3. Remplacez le JAVA_HOMEchemin par le JDK 8 et modifiez également la pathvariable.
  4. redémarrez le "cmd" et exécutez à cordova buildnouveau.

Et l'erreur a disparu!

ceeko
la source
4

si vous avez plusieurs versions de JDK, vous pouvez exécuter

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

avant la construction de cordova, pour utiliser une version spécifique de jdk :)

Walterwhites
la source
3

Les gars pour obtenir le bon mix sur Windows , vous devez faire ce qui suit

  1. Téléchargez et installez n'importe quelle version de JDK 1.8 ou supérieur.
  2. Ouvrez les variables d'environnement, créez une variable d'environnement appelée JAVA_HOME et définissez la valeur sur le chemin d'installation JDK. C:\Program Files\Java\jdk1.8.0_162 assurez-vous de ne pas ajouter le \bindans la valeur.

entrez la description de l'image ici

  1. Dans votre variable de chemin système, mettez un point-virgule ;et ajoutez cette valeur au chemin système, par exemple C:\Program Files\Java\jdk1.8.0_162\bin;Ici, le \binest ajouté.

Remarque: les variables d'environnement sont délicates. Elles sont censées être fermées par un ; avant d'en ouvrir un autre. C'est pourquoi nous en mettons un avant d'ajouter la valeur et un après la valeur pour la fermer.

entrez la description de l'image ici

  1. Fermez maintenant le terminal et rouvrez-le, puis exécutez les commandes précédentes.
das la sainteté
la source
il existe un mélange d'adressage java ... de JAVA_HOME, PATH. cordova utilise PATH qui pointe peut-être vers java12 / 13
bortunac le
3

Parfois changer le chemin et java-homene fonctionne pas. Vous devez ajouter

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

à la trajectoire des variables environnementales.

Santosh
la source
3

Aujourd'hui, j'ai également eu cette erreur Cordova : Requirements check failed for JDK 1.8 or greaterdans mon Mac OS lors de la création de l'application Ionic lorsque j'exécute la commande ionic cordova build --release androidvia un terminal.

La commande ci-dessous résout mon problème: -

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

J'espère que cela aidera quelqu'un à l'avenir!

Amit Gupta
la source
3

Réponse MacOS avec plusieurs versions de Java installées et pas besoin de désinstaller

Montrez-moi les versions de Java que j'ai installées:

$ ls -l /Library/Java/JavaVirtualMachines/

Pour le définir sur ma version jdk1.8:

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

Pour le définir sur ma version jdk11:

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

-------------------------------------------------- -----------------------

Notez que, malgré ce que dit le message, il semble que cela signifie qu'il veut la version 1.8, et envoie ce message si vous avez une version ultérieure .

Ce qui suit est mes tentatives précédentes qui m'ont conduit à la réponse ci-dessus, qui a ensuite fonctionné ... Vous devrez peut-être faire quelque chose de différent en fonction de ce qui est installé, alors peut-être que ces notes pourraient vous aider:


Réglez-le sur ma version jdk1.8

$ export PATH=/Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home/bin/javac:$PATH

Réglez-le sur ma version jdk11

$ export PATH=/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin/javac:$PATH

... mais en fait cela ne fonctionne pas car /usr/bin/javacc'est toujours ce qui s'exécute en premier:

$ which javac
/usr/bin/javac

... pour voir ce qui s'exécute en premier sur le chemin:

$ cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

Cela signifie que je peux remplacer le /usr/bin/javac... voir les commandes en haut de la réponse ...
La commande pour le définir sur jdk1.8 en utilisant ln, en haut de cette réponse, est ce qui a fonctionné pour moi.

kris
la source
2

Ce message d'erreur rend l'utilisateur confus, l'écran de réussite comme ci-dessous.cordova construire le succès

Le message d'erreur incite l'utilisateur à essayer de corriger l'échec de la construction avec la configuration JAVA_HOME. Mais le vrai problème ne se situe pas seulement dans JAVA_HOME.

Je corrige ce problème avec une configuration correcte dans JAVA_HOME et Path dans "variable système". entrez la description de l'image ici

Hope peut aider à résoudre le problème, mais pas à réinstaller JDK.

Bangyno
la source
2

La réponse publiée par MadNeox est correcte.J'étais confronté à un problème similaire, j'avais installé jdk 9 ainsi que la version 1.8

J'ai d'abord essayé en gardant jdk 9 et en supprimant la 1.8, cela afficherait une erreur La vérification des exigences a échoué

Ensuite, j'ai essayé en désinstallant jdk9 et en réinstallant 1. cette fois, il montrait l'échec de l'exécution de javac-version

Après avoir joué avec les variables d'environnement pendant un certain temps, j'ai enfin trouvé la solution

À ce stade, mon système n'a que la version jdk 1.8 Cordova: 7.1.0

-Ouvrir l'onglet Variables d'environnement -Sous les variables utilisateur créent une nouvelle variable PATH -donnez-lui la valeur suivante C: \ Program Files \ Java \ jdk1.8.0_151 \ bin (peut changer selon l'endroit où vous avez installé votre jdk)

Cela devrait résoudre votre problème J'espère que cela vous aidera

Bien que la réponse ait déjà été donnée, il m'a fallu un certain temps pour comprendre où je m'étais trompé, alors j'ai décidé de publier ceci en espérant que cela ferait gagner du temps à quelqu'un d'autre

Amey Bhivshet
la source
1

Assurez-vous simplement que les mêmes versions de JDK (c'est-à-dire 1.8 dans ce cas) sont accessibles à partir de PATHla variable d'environnement et JAVA_HOME. Exemple: Si JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152alors la PATHvariable doit également contenir le chemin ci-dessus et surtout avant tout autre chemin (s'il y en a) si JDK / JRE déjà mentionné dans la PATHvariable. Vous pouvez choisir de désinstaller d'autres versions si aucune autre application n'utilise une version différente de java.

Objectif
la source
1

Si jdk8 et jdk9 sont tous deux installés, vous devez vérifier la version

dans le chemin et vers lequel pointe JAVA_HOME.

Dans le journal que vous avez publié, je vois que JAVA_HOME mène au JDK9.

modifiez votre globel JAVA_HOME env var pour cibler JDK8 ou vous pouvez changer JAVA_HOME dans PowerShell avant d'utiliser la CLI cordova si vous souhaitez utiliser jdk8 uniquement pour cordova:

$env:JAVA_HOME="C:\Program Files\Java\jdk1.8.0_151"

**cordova build android**
Bal mukund kumar
la source
1

si vous avez plusieurs versions de Java installées et que vous devez les conserver, vous devez vérifier les éléments suivants:

  • JAVA_HOME pointant vers votre jdk1.8
  • dans votre variable PATH, vous devez vérifier que jdk1.8 \ bin path est avant les autres chemins jdk \ bin
Fehrlich
la source
1

J'ai rencontré le même problème avec jdk1.8.0_201.Il a été résolu lorsque j'ai créé JAVA_HOME = C: \ Program Files \ Java \ jdk1.8.0_201 et ajouté "C: \ Program Files \ Java \ jdk1.8.0_201 \ bin" dans variable de chemin

Samson Daniel
la source
1

J'ai (Open) JDK 8 et 11 installé sur Windows 10 et j'ai eu le même problème. Pour moi, ce qui suit a fonctionné:

  1. Définissez JAVA_HOME pour qu'il pointe vers JDK 8. (mentionné dans de nombreuses réponses auparavant.) ET
  2. Supprimez (!) JDK 11 du PATH car il s'est avéré que - bien que affichant le chemin JAVA_HOME pointant vers JDK 8 - Cordova a en fait accédé au JDK 11 qui était inclus dans le PATH, ce qui a fait échouer la vérification de la version de Java.
Dominik
la source
1

C'est une vieille question, mais comme j'ai juste eu le même problème, mais l'erreur avait une autre source, voici une réponse courte.

Problème rencontré sous Windows (uniquement) et avec l'IDE Webstorm 2019.2

Dans la version 2019.2, Webstorm avait un problème, car il utilisait en interne open jdk pour la variable% JAVA_HOME% au lieu du java java ciblé (à partir du système d'exploitation).

Dans mon cas (ouais c'est vieux, c'est un vieux projet cordova ...)

exécution java -versiondans Windows cmd.exe:

$ java -version
java version "1.8.0_221"

mais exécution java -versiondans le terminal Webstorms:

$ java -version
openjdk version "11.0.3" 2019-04-16
// more output

Un correctif est venu avec le correctif publié plus tard (aujourd'hui), la version 2019.2.1. Maintenant, Webstorm utilise la variable os% JAVA_HOME% comme il se doit et la java -versionsortie est identique dans les deux cas.

J'espère que cela aide quelqu'un!

nilsK
la source
1

L'erreur se produit lorsque le chemin par défaut de java est défini sur une version autre que Java 8 ou JDK 1.8. *

Pour mon cas, j'ai installé Java 11 après avoir installé Java 8

Vous pouvez tester en exécutant:

java -version

Pour mon cas, il est retourné:

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)

Pour résoudre ce problème, nous devons nous assurer que le chemin java pointe vers les binaires Java 8 à la place

En supposant que vous avez déjà installé Java 8 ou JDK 1.8. *:

  1. Assurez-vous que JAVA_HOME et JRE_HOME sont définis (assurez-vous qu'il pointe vers Java 1.8. *)

Variable Env

  1. À l'intérieur de PATH, assurez-vous que %JAVA_HOME%\binou C:\Program Files\Java\jdk1.8.0_251\binest ajouté

entrez la description de l'image ici

  1. Source du problème: Mon installation du JDK 11 a ajouté deux entrées PATH en haut, prenant la priorité ou remplaçant le %JAVA_HOME%\binPATH qui pointe vers JDK 1.8. *

Ne les ajoutez pas si vous ne les avez pas, recherchez d'autres entrées PATH qui peuvent remplacer %JAVA_HOME%\bin

entrez la description de l'image ici

  1. Cliquez sur "Descendre" pour les entrées de remplacement jusqu'à ce qu'elles soient en dessous %JAVA_HOME%\bin

%JAVA_HOME%\bin PATH qui pointe vers Java 8 sera désormais prioritaire sur les autres entrées PATH qui pointe vers JDK 11

entrez la description de l'image ici

  1. Enregistrez et ouvrez un nouveau terminal et exécutez
java -version

Pour mon cas, il est ensuite revenu:

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)

Fixé!

Nickson Yap
la source
0
  1. Accédez à la page d'accueil du panneau de configuration
  2. Réglages avancés du système
  3. Variables d'environnement
  4. Choisissez JAVA_HOME
  5. Éditer
  6. valeur variable pour le 1.8
Salvin
la source
0

Il semble que le SDK Android ne supporte pas Java 9. Passez à la version 8 si vous ne voulez pas revenir à JDK 1.8, ce qui pour moi est ridicule. JDK 8 fonctionne pour moi, mais assurez-vous de définir correctement la variable d'environnement JAVA_HOME sur l'emplacement de votre installation JDK.

Dgoldénone
la source
0

Selon la documentation officielle de Cordova, il ne prend en charge que JDK 1.8 pas plus grand jusqu'à la date (avril 2018) . Ou il peut y avoir un problème avec le script de détection de version dans cordova.

Cordova: installation des exigences

Abhay
la source
0

Je viens de renommer l'ancien dossier JDK avec _, juste au cas où j'en aurais besoin davantage, et cela a fonctionné.

C:\Program Files (x86)\Java\_jdk1.7.0_40 
C:\Program Files (x86)\Java\_jre7
Livio
la source
Sur ma machine, la configuration de java et javac était incohérente: java pointait vers JDK 9 tandis que javac pointait vers JDK 8. La configuration des deux sur JDK 8 a résolu le problème.
ominug le
0

J'utilise Windows et j'ai deux versions jdk 1.8 et 14 quelque chose ...

Face au même problème et après quelques débogages, trouvez la solution.

  1. définissez correctement JAVA_HOME.
  2. Modifiez la valeur de la variable utilisateur PATH avec la nouvelle version de jdk (1.8).
  3. Modifiez la valeur de la variable utilisateur PATH avec la nouvelle version de jdk (1.8).

Et ça a résolu

Viplav Soni
la source
0

La version Ubuntu / Debian Linux de cette réponse consiste à installer openjdk 8 et à définir la valeur par défaut viaupdate-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
lcapra
la source