Error de clave de registro: la versión de Java tiene el valor '1.8', pero se requiere '1.7'

91

Mientras corre

sencha app build production

Estoy teniendo el siguiente error:

Error: clave de registro 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion '

tiene el valor '1.8', pero se requiere '1.7'. Error: no se pudo encontrar java.dll Error: no se pudo encontrar Java SE Runtime Environment.

java -version , el comando muestra lo siguiente:

versión de java "1.8.0_40" Java (TM) SE Runtime Environment (compilación 1.8.0_40-b26) Java HotSpot (TM) 64-Bit Server VM (compilación 25.40-b25, modo mixto)

No puedo encontrar dónde va mal el camino. ¿Alguna idea?

----------------------- EDITAR -------------------------- ----------------------

Nota : estoy usando Windows 7 (64 bits).

He intentado desinstalar sencha touch cmd y volver a instalarlo. Pero sigue siendo el mismo error.

Desinstalé todas las instancias de la versión de Java y reinstalé la última, pero el problema persiste.

Anand Gupta
fuente

Respuestas:

294

Después de probar más de cien trucos, finalmente consiguió el éxito.

Quité todo java.exe, javaw.exey javaws.exede mi

  1. Windows\System32 y

  2. Windows\SysWOW64 carpeta. [Prueba el paso 2 si tienes un sistema x64 (Win 7 64 bits)]

Anand Gupta
fuente
11
Usuarios de Win 10 64Bit: eliminar los 3 archivos System32resolverá el problema.
iTurki
4
Pero tenemos que cerrar y volver a abrir el cmd y escribir java -version para ver los cambios ... Funcionó como un encanto gracias!
Cristian B.
1
@SkepticScribbler: Esto sucede cuando de alguna manera confundes Java. Está intentando ejecutar una máquina virtual java 7 donde encontró un JRE 8. Puede mostrar este problema incluso si escribe en la línea de comandos solo java o java -version en un entorno mal configurado.
Anand Gupta
@AnandGupta Esto es un tiro en la oscuridad, no es una solución - stackoverflow.com/a/53192247/1423507
masseyb
39

En mi caso (Windows 7 de 64 bits), hice lo siguiente:

  • Se eliminó la referencia a C: \ ProgramData \ Oracle \ Java \ javapath; de la variable de entorno Path
  • Se eliminaron los archivos java , javaw y javaws de la carpeta C: \ Windows \ System32

Luego, cerré todas las consolas de línea de comandos abiertas, las volví a abrir y ejecuté java -version .

aribeiro
fuente
Tuve este problema en Windows 10 al instalar JDK5u14, JDK6u34, JDK7u51 y JDK8u121 (en ese orden). Eliminar los archivos java de la carpeta de Windows no fue suficiente. También tuve que eliminar la ruta de la variable de entorno PATH.
uhm
31
  1. abrir regedit
  2. ir [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
  3. cambiar el valor CurrentVersionde "1.8" a "1.7"
suerte
fuente
2
Gracias. Resolvió mi problema. No tengo permisos para eliminar nada en SysWOW64. Simplemente cambiando CurrentVersion a través de regedit resolvió mi problema.
Krish
1
¡Una solución mucho más simple que intentar eliminar todas las versiones de Java extrañas!
Fred Andrews
.. sin embargo, no resuelve nada. Luego, el instalador se queja y con razón, que se requiere java 8.
user508402
Gracias, esta solución funcionó estaba tratando de resolver este error durante mucho tiempo
Abhishek Sawant
Advertencia: puede estropear sus otras aplicaciones que están configuradas para usar 1.8.
Waqas
19

re: usuarios de Windows

No. No elimine la referencia del entorno Javapath de su variable PATH.

La razón por la que el registro no funcionó es que el script Oracle Javapath debe ejecutarse en la secuencia PATH antes que los directorios JRE y JDK; resolverá la versión actual:

ponga este directorio en el HEAD de su %PATH%variable:

C:\ProgramData\Oracle\Java\javapath

[o donde sea que esté en su escritorio]

por lo que su RUTA se verá así, la mía, por ejemplo

PATH=C:\ProgramData\Oracle\Java\javapath;<other path directories>;E:\Program Files\Java\jdk1.8.0_77\bin;E:\Program Files\Java\jre1.8.0_77\bin

A continuación, verá la versión actual correcta:

C:\>java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
Andrés
fuente
Esta funciona para mí. Tengo Windows 7 (64 bits). Moví C: \ ProgramData \ Oracle \ Java \ javapath al comienzo de PATH, como sugirió. ¡Gracias!
softwarelover
1
¡Oye funcionó! No olvide reiniciar su computadora, gracias.
Sandoval0992
12

Mi experiencia:

Estoy usando Windows 8.1 y he degradado la versión de JAVA de 1.8 a 1.7 y estaba obteniendo el mismo error.

Error: la clave de registro 'Software \ JavaSoft \ Ja tiene el valor' 1.7 ', pero se requiere' 1.8 '.

He borrado java.exe , javaw.exe y javaws.ex correo de C: \ Windows \ System32 carpeta y que trabajó para mí.

RJ_Singh
fuente
Esto no funcionará si hay otros ejecutables de Java para otras versiones de Java en la ruta.
Underverse
9

Tuve el mismo problema. La solución simple que funcionó para mí es reorganizar las entradas en el PATHfor JRE/JDK. Este problema comenzó a aparecer después de la instalación JRE 8cuya instalación ha puesto algunos archivos ejecutables en System32 or SysWOW64directorios, estos archivos ejecutables se están estropeando. Para resolver el problema:

  1. Cree una variable de entorno que apunte a JDK home como JAVA_HOME.

    set JAVA_HOME=C:\Progra~1\Java\jdk1.8.0_45

  2. Coloque la entrada %JAVA_HOME%\binal inicio en su variable de entorno PATH. Añadiendo el valor existente de PATH. Por ejemplo:

    path=C:\Program Files\Java\jdk1.8.0_45\bin;%path%

pratikch
fuente
3
esta es la mejor solución si desea mantener múltiples versiones de Java una al lado de la otra, y si no tiene el privilegio de modificar el registro y eliminar archivos de la carpeta windows \ system.
Heinz
3

No eliminé ninguno de los archivos java.exe, pero cambié el orden de mi Sistema - variable "ruta" - para que refleje% JAVA_HOME% \ bin como la primera entrada. Eso hizo el truco.

nabo424
fuente
3

El error es explícito ...

Error: la clave de registro 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion 'tiene el valor' 1.8 ', pero se requiere' 1.7 '.

Error: no se pudo encontrar java.dll

Error: no se pudo encontrar el entorno de ejecución de Java SE.

... está intentando utilizar el java.exeejecutable 1.7 mientras que la clave de registro HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment> CurrentVersiontiene el valor 1.8.

El tema recurrente de las soluciones propuestas es que el error es un error de configuración . El error se puede resolver de varias maneras diferentes (por ejemplo, reconfiguración del entorno de los usuarios o eliminación de ejecutables java con los dedos cruzados y esperar que exista otro respaldo java.exeen los usuarios %PATH%y que el respaldo java.exesea ​​el ejecutable correcto).

La solución correcta depende de lo que esté tratando de lograr: "¿está intentando cambiar de jdk-8 a jdk-7? ¿Está intentando actualizar a jdk-8? ..."

Pasos de reproducción

  1. instalar jdk-7u80-windows-x64.exe

notas:

  • el java.exeejecutable disponible en los usuarios %PATH%está instalado enC:\Windows\System32
  • la instalación no actualiza a los usuarios %PATH%
  • la entrada de registro HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersioncadena se crea (entre otros) con el valor1.7
  1. instalar jdk-8u191-windows-x64.exe

notas:

  • los usuarios %PATH%se actualizan para incluirlos C:\Program Files (x86)\Common Files\Oracle\Java\javapathcomo la primera entrada
  • el valor de las entradas de registro de la cadena HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersionse actualiza a1.8
  1. actualizar la %PATH%variable de entorno de los usuarios , eliminarC:\Program Files (x86)\Common Files\Oracle\Java\javapath

  2. en un nuevo símbolo del sistema java -version

Error: la clave de registro 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion 'tiene el valor' 1.8 ', pero se requiere' 1.7 '.

Error: no se pudo encontrar java.dll

Error: no se pudo encontrar el entorno de ejecución de Java SE.

Solución (s)

  1. La solución de OP https://stackoverflow.com/a/29769311/1423507 es un enfoque de " cruzar los dedos y esperar que exista un retroceso java.exeen los usuarios %PATH%y que el ejecutable de respaldo sea correcto" al error. Dados los pasos de reproducción, la eliminación de los java.exe, javaw.exey javaws.exelos ejecutables de C:\Windows\System32(sólo en mi caso) dará lugar a no tener cualquier java.exepresente en los usuarios %PATH%resultando en el error de 'java' is not recognized as an internal or external command, operable program or batch file.que no es tanto de una solución.

  2. las respuestas https://stackoverflow.com/a/35775493/1423507 y https://stackoverflow.com/a/36516620/1423507 funcionan, sin embargo, está volviendo a usar java.exe1.7 (por ejemplo, actualice el CurrentVersionvalor de la clave de registro para que coincida con la java.exeversión que se encuentra en los usuarios %PATH%).

  3. asegúrese de que java.exe1.8 sea el primero que se encuentre en los usuarios %PATH%(cómo lo hace es irrelevante), es decir:

    • actualice los usuarios %PATH%para incluir C:\Program Files (x86)\Common Files\Oracle\Java\javapathprimero (asegúrese de que los ejecutables en ese directorio sean correctos)
    • actualice los usuarios %PATH%para incluir primero la ruta absoluta de sus binarios de Java ( set PATH="C:\Program Files\Java\jre1.8.0_191\bin;%PATH%")
    • establecer las variables de entorno Java específica y actualización de los usuarios %PATH%con ellos ( set JAVA_HOME="C:\Program Files\Java"; set JRE_HOME=%JAVA_HOME%\jre1.8.0_191; set PATH=%JRE_HOME%\bin;%PATH%)
masseyb
fuente
@whoever_that_downvotes: esta respuesta no se puede mejorar sin comentarios constructivos. Deje un comentario sobre el "por qué" y podría mejorar esta respuesta para el beneficio de la comunidad.
masseyb
2

Tuve este error en algunos servicios de Windows que ejecutan Java. Al final, en mi máquina intenté desinstalar las otras versiones de java.

Dejé solo 1.8 y ahora todo está funcionando.

Prime óptimo
fuente
1

La respuesta de aribeiro me ha funcionado, con cambios menores

  • Eliminé la referencia a C: \ ProgramData \ Oracle \ Java \ javapath; de la variable de entorno Path
  • Hice / path / to / jdkhome como la primera entrada en mi variable de entorno PATH. Creo que esto solo es todo lo que se necesita.
abdel
fuente
1

En cuanto a mí, en win7 64bit.

Copie java.exe javaw.exe javaws.exe en la carpeta C:\Program Files\Java\jre1.8.0_91\bin to the C:\Windows\System32.

y luego abra cmd, escriba java -version.

C:\Users\HEcom>java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

Antes de lo anterior, asegúrese de que la versión actual del registro sea 1.8

En el menú INICIO, escriba "regedit" para abrir el editor del Registro.

  1. Vaya a "HKEY_LOCAL_MACHINE" en el menú de árbol / explorador de registro del lado izquierdo
  2. Haga clic en "SOFTWARE" dentro de los registros "HKEY_LOCAL_MACHINE"
  3. Haga clic en "JavaSoft" dentro de los registros de "SOFTWARE"
  4. Haga clic en "Java Runtime Environment" dentro de la lista de registros "JavaSoft". Aquí puede ver las diferentes versiones de Java instalado.
  5. Haga clic en "Java Runtime Environment" - En el lado derecho obtendrá 4-5 filas. Seleccione "CurrentVersion" y haga clic derecho (seleccione la opción de modificación) asegúrese de que la versión sea "1.8"
Francis Bacon
fuente
Esta es una muy mala idea. La carpeta de binarios debe agregarse a la ruta en lugar de mover archivos a una carpeta que ya está en la ruta. Puede causar un dolor de cabeza horrible si alguien más tiene que actualizar java en el sistema y no tiene conocimiento sobre esta "solución". Y esa es exactamente la fuente del problema de la operación ... En su lugar, arregle su camino.
Riwels
Cambie I just MOVE a I just COPY y estará listo para comenzar.
Matthieu
1

Mi solución para este problema vino después de leer e intentar todo lo anterior.

En mi caso, traté de degradar Java para usar impresiones en formato Apache ActiveMQ. Después de desinstalar todas las versiones de Java y limpiar el registro, recibí el mismo error

Error: la clave de registro 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion 'tiene el valor' 1.7 ', pero se requiere' 1.8 '. "

En mi caso tenía que ir a las variables de entorno, editar ruta, abra la ubicación javapath ( C:\ProgramData\Oracle\Java\javapath) y allí estaba - tres archivos ( java.exe, javaw.exe, javaws.exe) que quedaron de la versión JRE8.

Después de establecer este hecho, simplemente los cambié con los mismos archivos del C:\Windows\SysWOW64directorio (esos eran de la JRE7versión) y todo funcionó perfectamente.

MikeG
fuente
1

Después de la última actualización automática de Java, no pude ejecutar Java desde el símbolo del sistema.

Mi variable de ruta tenía 'C: \ ProgramData \ Oracle \ Java \ javapath;'

No pude cd en 'C: \ ProgramData \ Oracle \ Java \ javapath;' desde la ventana del símbolo del sistema, ya que no existía.

Eliminé C: \ ProgramData \ Oracle \ Java \ javapath; ' de la variable de ruta y la reemplazó con 'C: \ Archivos de programa \ Java \ jre1.8.0_141 \ bin;'

usuario20150603
fuente
Esto es mucho más un comentario que una respuesta. La pregunta es sobre una herramienta muy específica, y deja muy claro que java se encuentra de hecho.
GhostCat
1

Tienes que definir tu carpeta jdk en la variable JAVA_HOME, agregar% JAVA_HOME% a tu ruta variable

Elimine o cambie el nombre de su java.exe, javaw.exe y javaws en su carpeta system32

ejecute cmd.exe, java -version ahora tome la nueva versión que defina en JAVA_HOME.

El mehdi AZROUR
fuente
1

Además de la respuesta de Anand Gupta, asegúrese de que no se use ningún otro java excepto el que necesita. Ejecute which java( where javapara Windows) y vea qué ejecutables de Java se utilizan. Simplemente elimine los que no desea usar y si el que necesita no está presente, agréguelo a PATH.

Sergey K.
fuente
0

Primero debe tener Java 7. Si no lo tiene, instálelo primero (no sé qué está usando, Linux, Mac, yum, apt, homebrew, debería averiguarlo usted mismo).

Si ya tiene Java 7, ejecute:

echo $JAVA_HOME

La salida debe ser algo como esto: /usr/lib/jvm/java-8-oracle. Cerca de este directorio, debería ver el java-7directorio. Después de encontrarlo, corre

export JAVA_HOME=${java-7-dir}

Cambie {java-7-dir}con la ruta de su directorio. Entonces puedes ejecutar tu comando.

Esta es solo una solución temporal. Para cambiarlo permanentemente, coloque el comando anterior en su ~/.bashrcarchivo.

EDITAR: Si está utilizando Windows , cambie la variable de entorno de JAVA_HOMEa la ruta del directorio de instalación de Java 7.

mtyurt
fuente
@AnandGupta Agregué el caso de Windows.
mtyurt
En el caso de Linux, debe proporcionar la ruta al binario de Java en JAVA_HOME. Por ejemplo, /usr/java/jdk1.5.0_07/bin/java. En el caso de Windows, solo debería bastar el directorio de instalación.
Aditya K
0

Mi pequeña contribución, por compartir el mismo problema con la versión de 64 bits de Talend Open Studio.

  1. Ejecute .. \ TOS_DI-Win32-20150702_1326-V6.0.0 \ TOS_DI-win-x86_64.exe manualmente (sin vincular un menú de inicio de Windows)
  2. y aparece este mensaje de error de registro

Para resolver esto, elimine todos los archivos java.exe, javaw.exe y javaws.exe en c: \ ProgramData \ Oracle \ Java \ javapath \

y TOS comienzan con la versión de 64 bits correctamente.

Fábrica de Undigo
fuente
0

Elimínelo de la ruta del sistema:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

Y solucionará el problema al actualizar la versión de Java de 1.7 a 1.8

usuario5645373
fuente
1
¿Podrías decirnos por qué?
Vinay Prajapati
0

Existe en alguna parte otro java.exe de la versión 1.8 de jre que está en la "ruta", debe buscarlo y eliminarlo si es posible. puede estar en tempdata de usuario para aplicaciones que necesitan jre.

masoudifar
fuente
0

Cambie la variable del sistema JAVA_BIN y JAVA_HOME y luego reinicie el sistema o tal vez vuelva a iniciar sesión. Tiene ese error porque todavía es la ruta jdk1.7. En Windows es así: ingrese la descripción de la imagen aquí

Tiina
fuente
0

¡Simplemente instale Java SE Runtime Environment JRE 7!

Ahora verá "java 7" y "java 8" en "Programas y características" en el "Panel de control"

Funcionó para mí.

Tenesi
fuente
0

Una posible solución a este problema es agregar en la carpeta Sencha CMD un archivo bat como se sugiere en este hilo Sencha Cmd 5 + Java 8 Error .

El lote tendrá el nombre "sencha.bat" con este código:

@echo off
set JAVA_HOME=<YOUR JDK 7 HOME>
set PATH=%JAVA_HOME%\bin;%PATH%
set SENCHA_HOME=%~dp0
java -jar "%SENCHA_HOME%\sencha.jar" %*

Colóquelo en la carpeta sencha, en mi caso es

C:\Users\<YOUR USER>\bin\Sencha\Architect\Cmd\6.2.0.103

El siguiente paso es cambiar la variable de entorno PATHEXT. Cambie las variables de usuario para tener el menor impacto posible.

Yo cambio de

COM;.CMD;.EXE;.BAT;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

a

COM;.BAT;.EXE;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

La idea es hacer que Windows ejecute archivos .bat primero que archivos .exe. Esto es importante porque en la carpeta sencha ya hay un archivo "sencha.exe". Y en la línea de comando si escribe "sencha" ejecutará "sencha.exe" en lugar de "sencha.bat".

Esta fue la única solución que funcionó porque estoy muy restringido cuando se trata de permisos.

Adilson Cabral
fuente
0

Mi sistema: - Windows 8.1

Entornos Java

  • C: \ JavaEnvironment \ Java \ jdk1.8.0_161
  • C: \ JavaEnvironment \ Java \ jdk1.7.0_75

Recientemente instalé Oracle 11g XE y recibí el mensaje de error mencionado cuando accedí al comando "java" en el símbolo del sistema.

Verifiqué mis variables de entorno, verifiqué la secuencia (como se menciona en las respuestas anteriores) y detecté que la variable PATH de mi sistema tenía la siguiente entrada como primera entrada:

C: \ OracleDatabase \ oraclexe \ app \ oracle \ product \ 11.2.0 \ server \ bin ;

Cambié la secuencia y definí la ruta JDK como primera entrada:

ingrese la descripción de la imagen aquí

Repliqué el mismo cambio en la variable de usuario: ruta

ingrese la descripción de la imagen aquí

Después de terminar la actividad anterior, reinicié el símbolo del sistema y ejecuté el comando java -version y el problema desapareció. Mostró Java 8 como la versión actual.

Philip Dilip
fuente
-1

Tuve un problema similar. Mover la ruta JDK y JRE a la parte superior de la variable de ruta resolvió el problema (que tiene prioridad sobre lo que está presente en System32)

Por ejemplo, aquí está el mío:

ingrese la descripción de la imagen aquí

Ramesh
fuente
-2

Desinstale Java 8 de su lista de programas. Siguiendo los pasos a continuación: -

Desde su escritorio, haga clic en el menú Inicio (o bola de Inicio) en la parte inferior izquierda de su pantalla. Vaya al Panel de control. Haga clic en Programas y características. Seleccione Java8 y haga clic en Desinstalar

nitish verma
fuente
-2

Elimine todas las aplicaciones relacionadas con Java en el administrador de tareas y luego elimine Java.exe, Javaw.exe y Jawaws.exe de C: \ windows \ System32

Esto debería solucionar tu problema... :)

Brijesh Rana
fuente
¿Puede aclarar cómo resolvería eso el problema en cuestión?
Muhammad Mamoor Khan
-3

acabo de hacer esto y funcionó

HKLM> SOFTWARE> JavaSoft> Java Runtime Environment

simplemente cambie manualmente la versión actual a 1.7.

jajaja ... pero funcionó!

usuario6180925
fuente