Cordova: la verificación de requisitos falló para JDK 1.8 o superior

93

Estoy usando Cordova 6.4.0 en el sistema operativo Windows 7, pero aparece este error una vez que intenté construir la versión de Android:

Descripcion del problema

La variable Java Home está configurada correctamente en la ruta de JDK, pero no sé por qué tengo este problema. ¿Alguna sugerencia por favor?

MadNeox
fuente
3
Okay. Tuve el mismo problema, pero no pude descargar la versión 1.8 porque está oculta con otro nombre. Es el 8u152. Después de un par de horas lo encontré aquí: oracle.com/technetwork/java/javase/downloads/…
user2367101

Respuestas:

58

Desinstale todos los JDK anteriores, incluido 1.8 Instale JDK 1.8

MadNeox
fuente
3
@Urbycoz sólo tiene que ir a Add or Remove Programs/Program Featuresen Windows OS. A continuación, elimine las versiones anteriores de Java. Había una version 7aplicación también instalaron y después de uninstallingella, cordova run androidtrabajado. Buena suerte.
Aakash
1
Pero, ¿qué significa? ¿Cómo selecciona cordova el JDK si se instalan diferentes JDK? ¿No puede ser posible que solo pueda tener un JDK (por ejemplo, construir una máquina)?
Bruno Ranschaert
usted todavía tiene que establecer las variables de modo envionment Cordova puede encontrar la ruta de acceso al JDK superuser.com/questions/949560/...
Yvonne Aburrow
19
@MadNeox desinstalar otra versión es solo una solución, no la solución
Gandhi
hizo el truco para mí. ido a appwiz.cpl (CMD) de las ventanas y java quitado 7 y Java SDK 7.
Ortiz
53

En Linux (Debian / Ubuntu) esto se puede resolver seleccionando un SDK de Java 1.8 en

sudo update-alternatives --config javac

Cambiar la JAVA_HOMEvariable env directamente no parece tener ningún efecto.

EDITAR: responder a los comentarios: esto probablemente tenga algo que ver con el hecho de que las nuevas instalaciones de Java de Debian (y aparentemente Ubuntu) a través del administrador de paquetes no usan la JAVA_HOMEvariable de entorno para determinar la ubicación del JRE. Vea esta y esta publicación para obtener más información.

oseiskar
fuente
1
Me has alegrado el día. Probé todo en los últimos días. Muchas gracias. Pero, ¿por qué solo esto funciona? ¿Por qué la configuración de la variable no tiene ningún efecto?
mi-
1
También funcionó para mí en Ubuntu ... ¡lo había hecho javapero no javac! Ahora no es necesario desinstalar Java 9 :)
hughjdavey
El mismo comentario aquí. Aunque JAVA_HOMEapuntaba al 1.8 JDK correcto, solo la actualización del sistema predeterminado satisfizo a Cordova.
myoan
1
Al hacer sudo update-alternativas --config javac Solo hay una alternativa en el grupo de enlaces javac (proporcionando / usr / bin / javac): / usr / lib / jvm / java-11-openjdk-amd64 / bin / javac Nada que configurar . Necesito volver a java-8-openjdk, ¿hay algo para hacerlo?
Taieb
Por qué esta es una solución en ubuntu. Tal como dijo myoan, ¿por qué actualizar el sistema por defecto satisfecho cordova?
Jithin
40

No es necesario desinstalar ninguna versión superior de sdk. simplemente instale jdk1.8.0_161 o no lo haga si ya está instalado.

Ahora simplemente configure la JAVA_HOMEvariable USER (no la variable del sistema) como se muestra en la imagen de abajo.

ingrese la descripción de la imagen aquí

De esta manera, no es necesario desinstalar la versión superior y el problema se resuelve.

Rashmin Javiya
fuente
9
Recuerde cerrar el terminal / IDE antes de intentar ejecutar sus comandos nuevamente.
Daniel
1
o simplemente puede ejecutar $. ~ / .bashrc para exportar las variables env de nuevo
Nick Cuevas
33

Lo que funcionó fue desinstalar jdk 9 y reinstalar jkd 8.x

En Mac, para desinstalar, vaya al terminal y siga estos pasos:

cd /Library/Java/JavaVirtualMachines

sudo rm -rf jdk-9.0.1.jdk

Luego instale jdk 8.x descargando el paquete .dmg de Oracle.

Bandito11
fuente
23

Es posible que tenga una versión superior a 8, pero Cordova solo admite JDK 1.8. Ver este enlace Documentación de Córdoba

Eché un vistazo al fragmento de código que en realidad busca el número de versión de su java. Busque lo siguiente: module.exports.check_java en plataformas / android / cordova / lib / check_reqs.js . en la línea 220. Verá una expresión regular y un comentario dejado por el equipo de que Java 10 será compatible en el futuro.

La expresión regular existente fallará cuando se ejecute en las últimas versiones de java, como Java 10. Esto se debe a que Java 8 o 9 se guardan en el siguiente formato: 1. [8-9]. ** pero Java 10 está guardado como 10. ** y la expresión regular busca una versión en el formato 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);

Mi solución:

No es necesario que desinstale su versión actual de JRE o JDK ya que el instalador instala cada versión en una carpeta específica.

1- Instalar la versión Java 8 Siga este enlace

2- Actualiza tus variables de entorno:

  • JAVA_HOME si instaló el JDK
  • JRE_HOME si instaló JRE

apuntándolos a la ubicación donde se instalaron JRE 8 y 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

Abra una nueva sesión de terminal y ejecute el comando que estaba fallando. Debería funcionar ahora.

¿No funcionó?

Si falla por otras razones, posible proceso de depuración:

  • Asegúrese de que las variables JAVA_HOME y JRE_HOME sean variables del sistema.
  • Asegúrese de que se agreguen a la ruta de su usuario Agregar variables a la ruta
Gloire
fuente
Esta fue la única respuesta correcta para mí. Consulte este enlace para obtener más información evothings.com/doc/build/cordova-install-linux.html
Dara Java
17

La desinstalación de versiones anteriores de JDK habría funcionado. Pero supongo que puede ser una solución. Enfrenté el mismo problema y noté que tanto la nueva versión de JDK como la ruta de JDK de la versión anterior se han mencionado en 'path'variable ambiental.

Eliminar la ruta JDK de la versión anterior de 'pathla variable de entorno funcionó para mí. Espero que también ayude a alguien.

Gandhi
fuente
si va a configurar las variables de entorno, es posible encontrar esto útil superuser.com/questions/949560/...
Yvonne Aburrow
Sí, puedo ejecutar el comando de compilación con esto, pero sigo teniendo problemas con el comando de ejecución 'ionic cordova ejecutar android', que muestra el error INSTALL FAILED UPDATE INCOMPATIBLE.
supriya chauhan
@supriyachauhan, puede intentar reinstalar todo el material nuevamente. De lo contrario, es posible que deba proporcionar detalles elaborados para delimitar el problema
Gandhi
9

Descubrí que mi variable de entorno de ruta apuntaba a java 1.7 mientras que JAVA_HOME apuntaba a 1.8, así que edité la variable de ruta a 1.8 y estaba bien.

Iyke Perry
fuente
8

en mi caso, JAVA_HOME apuntaba a C: \ Archivos de programa (x86) \ Java \ jdk1.7.0_55

cuando escribí donde java en cmd arrojó C: \ Archivos de programa (x86) \ Java \ jdk1.7.0_55 junto con la ruta java.exe, cambié la variable JAVA_HOME de variables de entorno a C: \ Archivos de programa \ Java \ jdk1.8.0_20 y funcionó, así que parece que tenía 2 instancias jdk y cordova necesita la v1.8. *

Mawardy
fuente
Compruebe hacia dónde apunta su variable de ruta. Tenía JAVA_HOME apuntando a 1.8 pero en Path apuntaba a una versión diferente. ¡Funcionó bien después de alinear los dos!
ahb
6

MAC: Vaya a: / Library / Java / JavaVirtualMachines Asegúrese de tener solo jdk1.8.0_201.jdk Si tiene muchos, elimine otros JDK

Shelly Pritchard
fuente
5

Estoy de acuerdo con @Hozington. Este debería ser el error en el código Cordova para detectar la versión de Java. Lo que hice fue:

  1. Conserva el JDK 10
  2. Instale el JDK 8
  3. Cambie JAVA_HOMEa la ruta de JDK 8 y cambie también la pathvariable.
  4. reinicie el "cmd" y cordova buildvuelva a ejecutar .

¡Y el error desapareció!

ceeko
fuente
4

si tiene muchas versiones de JDK, puede ejecutar

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

antes de la compilación de cordova, para usar una versión específica de jdk :)

Walterwhites
fuente
3

Chicos, para obtener la mezcla correcta en Windows , deben hacer lo siguiente

  1. Descargue e instale cualquier versión de JDK 1.8 o superior.
  2. Abra las variables de entorno, cree una variable de entorno llamada JAVA_HOME y establezca el valor en la ruta de instalación de JDK. C:\Program Files\Java\jdk1.8.0_162 asegúrese de no agregar \binel valor.

ingrese la descripción de la imagen aquí

  1. En la variable de la ruta del sistema, coloque un punto y coma ;y agregue este valor a la ruta del sistema, por ejemplo, C:\Program Files\Java\jdk1.8.0_162\bin;aquí \binse agrega.

Nota: Las variables de entorno son complicadas. Se supone que deben cerrarse con a ; antes de abrir otro. Por eso ponemos uno antes de sumar el valor y otro después del valor para cerrarlo.

ingrese la descripción de la imagen aquí

  1. Ahora cierre el terminal y vuelva a abrirlo, luego ejecute los comandos anteriores.
das santidad
fuente
hay una combinación de direcciones java ... desde JAVA_HOME, PATH. cordova está usando PATH que posiblemente apunta a java12 / 13
bortunac
3

A veces cambia el camino y java-homeno funciona. Necesitas agregar

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

a la ruta de la variable ambiental también.

Santosh
fuente
3

Hoy también recibí este error Cordova : Requirements check failed for JDK 1.8 or greateren mi Mac OS mientras construía la aplicación Ionic cuando ejecuto el comando a ionic cordova build --release androidtravés del terminal.

El siguiente comando resuelve mi problema: -

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

¡Espero que ayude a alguien en el futuro!

Amit Gupta
fuente
3

MacOS responde con múltiples versiones de Java instaladas y sin necesidad de desinstalar

Muéstrame qué versiones de Java he instalado:

$ ls -l /Library/Java/JavaVirtualMachines/

Para configurarlo en mi versión jdk1.8:

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

Para configurarlo en mi versión jdk11:

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

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

Tenga en cuenta que, a pesar de lo que dice el mensaje, parece que significa que quiere la versión 1.8 y muestra este mensaje si tiene una versión posterior .

Lo que sigue son mis intentos anteriores que me llevaron a la respuesta anterior, que luego funcionó ... Es posible que deba hacer algo diferente según lo que esté instalado, por lo que tal vez estas notas puedan ayudar:


Configurarlo en mi versión jdk1.8

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

Configurarlo en mi versión jdk11

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

... pero en realidad eso no funciona porque /usr/bin/javacsigue siendo lo que se ejecuta primero:

$ which javac
/usr/bin/javac

... para ver qué pasa primero en el camino:

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

Eso significa que puedo anular /usr/bin/javac... ver los comandos en la parte superior de la respuesta ...
El comando para configurarlo en jdk1.8 usando ln, en la parte superior de esta respuesta, es lo que funcionó para mí.

kris
fuente
2

Este mensaje de error confunde al usuario, la pantalla de éxito es la siguiente.Córdoba construye el éxito

El mensaje de error hace que el usuario intente corregir el error de compilación con la configuración JAVA_HOME. Pero el problema real no está solo en JAVA_HOME.

Soluciono este problema con la configuración correcta en JAVA_HOME y Path en "variable del sistema". ingrese la descripción de la imagen aquí

Hope puede ayudar a solucionar el problema, pero no a reinstalar JDK.

Bangyno
fuente
2

La respuesta publicada por MadNeox es correcta.Me enfrentaba a un problema similar.Tenía instalado jdk 9, así como la versión 1.8.

Primero lo intenté manteniendo jdk 9 y eliminando 1.8, mostraría un error La verificación de requisitos falló

Luego intenté desinstalar jdk9 y reinstalar 1. esta vez mostraba un error al ejecutar javac-version

Después de jugar con las variables de entorno durante algún tiempo, finalmente obtuve la solución

En este punto, mi sistema solo tiene la versión jdk 1.8 Cordova: 7.1.0

-Abrir la pestaña Variables de entorno -Bajo las variables de usuario, cree una nueva variable PATH -Déle el siguiente valor C: \ Archivos de programa \ Java \ jdk1.8.0_151 \ bin (puede cambiar dependiendo de dónde haya instalado su jdk)

Esto debería resolver tu problema Espero que te ayude

Aunque la respuesta ya estaba dada, me tomó algo de tiempo descubrir dónde estaba yendo mal, así que decidí publicar esto con la esperanza de ahorrarle tiempo a otra persona

Amey Bhivshet
fuente
1

Solo asegúrese de que las mismas versiones de JDK (es decir, 1.8 en este caso) sean accesibles desde PATHla variable de entorno y JAVA_HOME. Ejemplo: la variable If JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152then PATHtambién debe contener la ruta anterior y, lo que es más importante, antes de cualquier (si hay alguna) otra ruta si JDK / JRE ya se mencionó en la PATHvariable. Puede optar por desinstalar otras versiones si ninguna otra aplicación utiliza una versión diferente de java.

Objetivo
fuente
1

Si tiene instalados jdk8 y jdk9, debe verificar cuál es la versión

en la ruta y donde JAVA_HOME apunta.

En el registro que publicaste, veo que JAVA_HOME conduce al JDK9.

modifique su globel JAVA_HOME env var para apuntar a JDK8 o puede cambiar JAVA_HOME en powershell antes de usar la CLI de cordova si desea usar jdk8 solo para cordova:

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

**cordova build android**
Bal mukund kumar
fuente
1

Si tiene varias versiones de Java instaladas y necesita conservarlas, debe verificar lo siguiente:

  • JAVA_HOME apuntando a su jdk1.8
  • en su variable PATH, debe verificar que la ruta jdk1.8 \ bin esté antes que las otras rutas jdk \ bin
Fehrlich
fuente
1

Me enfrenté al mismo problema con jdk1.8.0_201. Se resolvió cuando hice JAVA_HOME = C: \ Program Files \ Java \ jdk1.8.0_201 y agregué "C: \ Program Files \ Java \ jdk1.8.0_201 \ bin" en variable de ruta

Sansón Daniel
fuente
1

Tengo (Open) JDK 8 y 11 instalados en Windows 10 y tuve el mismo problema. Para mí funcionó lo siguiente:

  1. Configure JAVA_HOME para que apunte a JDK 8. (Mencionado en muchas respuestas antes). Y
  2. Elimine (!) JDK 11 del PATH, ya que resultó que, aunque mostraba la ruta JAVA_HOME apuntando a JDK 8, Cordova realmente accedió al JDK 11 que estaba incluido en el PATH, lo que hizo que fallara la verificación de la versión de Java.
Dominik
fuente
1

Es una pregunta antigua, pero como tuve el mismo problema, pero el error tuvo otra fuente, aquí hay una respuesta breve.

Problema resuelto en Windows (solo) y con Webstorm IDE 2019.2

En la versión 2019.2, Webstorm tenía un problema, porque internamente usaba open jdk para la variable% JAVA_HOME% en lugar de (desde el sistema operativo) java jdk de destino.

En mi caso (sí, es antiguo, es un proyecto antiguo de Córdoba ...)

ejecutando java -versionen Windows cmd.exe:

$ java -version
java version "1.8.0_221"

pero ejecutándose java -versionen la terminal de Webstorms:

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

Una solución vino con el parche lanzado más tarde (hoy), versión 2019.2.1. Ahora Webstorm usa la variable os% JAVA_HOME% como debería y la java -versionsalida es idéntica en ambos casos.

¡Espero que ayude a alguien!

nilsK
fuente
1

El error se produce cuando la ruta predeterminada a java se establece en una versión distinta de Java 8 o JDK 1.8. *

Para mi caso, he instalado Java 11 después de instalar Java 8

Puede probar ejecutando:

java -version

Para mi caso volvió:

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)

Para solucionar esto, debemos asegurarnos de que la ruta de Java apunte a los binarios de Java 8.

Suponiendo que ya tiene Java 8 o JDK 1.8. * Instalado:

  1. Asegúrese de que JAVA_HOME y JRE_HOME estén configurados (asegúrese de que apunte a Java 1.8. *)

Variable env

  1. Dentro de PATH, asegúrese de que %JAVA_HOME%\bino C:\Program Files\Java\jdk1.8.0_251\binse agregue

ingrese la descripción de la imagen aquí

  1. Fuente del problema: Mi instalación de JDK 11 agregó dos entradas PATH justo en la parte superior, teniendo prioridad o anulando la %JAVA_HOME%\binPATH que apunta a JDK 1.8. *

No agregue estos si no los tiene, busque otras entradas PATH que puedan anular %JAVA_HOME%\bin

ingrese la descripción de la imagen aquí

  1. Haga clic en "Mover hacia abajo" para las entradas anuladas hasta que estén debajo %JAVA_HOME%\bin

%JAVA_HOME%\bin PATH que apunta a Java 8 ahora tendrá prioridad sobre las otras entradas PATH que apuntan a JDK 11

ingrese la descripción de la imagen aquí

  1. Guarde, abra una nueva terminal y ejecute
java -version

Para mi caso, luego regresó:

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)

¡Fijo!

Nickson Yap
fuente
0
  1. Ir a Inicio del panel de control
  2. Configuración avanzada del sistema
  3. Variables de entorno
  4. Elija JAVA_HOME
  5. editar
  6. valor variable para el 1.8
Salvin
fuente
0

Parece que el SDK de Android no es compatible con Java 9. Cambie a 8 si no quiere volver a JDK 1.8, lo cual para mí es ridículo. JDK 8 funciona para mí, pero asegúrese de configurar la variable de entorno JAVA_HOME en la ubicación de su instalación de JDK correctamente.

Dgoldenona
fuente
0

Según la documentación oficial de Cordova, solo admite JDK 1.8, no mayor hasta la fecha (abril de 2018) . O puede haber un problema con el script de detección de versiones dentro de cordova.

Córdoba: Instalación de los requisitos

Abhay
fuente
0

Acabo de cambiar el nombre de la carpeta JDK anterior con _, por si acaso lo necesito más, y funcionó.

C:\Program Files (x86)\Java\_jdk1.7.0_40 
C:\Program Files (x86)\Java\_jre7
Livio
fuente
En mi máquina, la configuración de java y javac era inconsistente: java apuntaba a JDK 9 mientras que javac apuntaba a JDK 8. La configuración de ambos en JDK 8 solucionó el problema.
ominug
0

Estoy usando Windows y tengo dos versiones jdk 1.8 y 14, algo ...

Enfrentó el mismo problema y después de algunas depuraciones, encuentre la solución.

  1. configure JAVA_HOME correctamente.
  2. Cambie el valor PATH de la variable de usuario con la nueva versión de jdk (1.8).
  3. Cambie el valor PATH de la variable de usuario con la nueva versión de jdk (1.8).

Y resolvió

Viplav Soni
fuente
0

La versión Ubuntu / Debian Linux de esta respuesta es instalar openjdk 8 y establecer el valor predeterminado a través deupdate-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
fuente