Recientemente, mi equipo de desarrollo se vio obligado a pasar a un entorno de desarrollo remoto donde no tenemos acceso completo a los servidores. Antes del cambio, teníamos un JAR que funcionaba bien en Java 1.7 x64 junto con JRE 7. Cuando nos mudamos al nuevo servidor, nuestro JAR se estaba ejecutando correctamente, pero luego uno de los administradores del servidor "actualizó" nuestro Java a uno más antiguo. versión y desinstalamos el que estábamos usando. No me preguntes por qué, no lo sé. Reinstalé Java 1.7 y desinstalé 1.6 junto con los JRE.
El siguiente problema ocurre en tiempo de ejecución, no hay errores de compilación:
Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.7', but '1.6' is required.
Error: could not find java.dll
Error: could not find Java SE Runtime Environment.
Ejecuté el mismo JAR en mi computadora portátil sin problemas. Tanto el servidor como mi computadora portátil tienen JDK 1.7 y JRE 7 en las respectivas variables% HOME% y PATH del sistema. Incluso reinstalé JRE 6 y lo coloqué más tarde en las variables PATH del entorno del sistema con el mismo resultado.
También cambié el registro de nuevo para mirar 1.6 y resulta en lo siguiente, que busqué y parece ser por tener varios Javas instalados (lo que lleva de nuevo a mi problema original):
Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
Agradecería cualquier información que tengan, ya que he estado mirando varios foros, pero nada parece tener exactamente mi problema. Además, esto también ha sucedido en otro servidor que estamos usando. ¡Gracias!
Actualización: No hubo suerte al volver a compilar el JAR a 1.6 o 1.7 y hacer coincidir el JDK. Además, ¿por qué en el mundo una versión más nueva de Java rompería una versión compilada anterior?
fuente
java.exe
,javaw.exe
yjavaws.exe
se almacena bajoWindows/SysWOW64
. También por alguna razón cuando he instalado el SDK 1.8 instaladojava.exe
,javaw.exe
yjavaws.exe
bajoC:/ProgramData/Oracle/Java/javapath
. No sé por qué, pero los eliminé también yjava -version
aún funcionan.Acabo de tener un error similar al instalar java 8 (jdk & jre) en un sistema que ya ejecutaba Java 7.
Mi entorno se configuró correctamente (Path & java_home correctamente definidos), pero el problema surge de la forma en que funcionaban los instaladores de Java anteriores a 8, que es que solían copiar los tres ejecutables (java.exe, javaw.exe y javaws.exe ) al directorio del sistema de Windows. Estos permanecen a menos que se sobrescriban con una nueva instalación anterior a 8.
Sin embargo, el instalador de Java 8 crea enlaces simbólicos en un nuevo directorio, C: \ ProgramData \ Oracle \ Java \ javapath, que apunta a la ubicación real de JRE 8.
Esto significa que en realidad ejecutará los antiguos 7 ex pero usará los nuevos 8 DLL.
Entonces, la solución es simplemente eliminar los 3 exes de Java, como arriba, del directorio del sistema de Windows.
Si está ejecutando Java de 32 bits en un Windows de 64 bits, los exes estarían en Windows \ SysWOW64, de lo contrario en Windows \ System32.
fuente
Eliminé archivos java en windows / system32 y también eliminé c: \ ProgramData \ Oracle \ Java \ javapath de la variable PATH, porque había 3 enlaces simbólicos a archivos java 1.8.
Tenía JDK 1.7 en la variable% JAVA_HOME% y java1.7 / bin en la RUTA.
PS1: Mi problema estaba entre Java 1.7 y Java 1.8.
PS2: No puedo agregar esto como un comentario a la respuesta de Victor porque no tengo suficientes puntos.
fuente
En el menú INICIO, escriba "regedit" para abrir el editor del Registro.
Vaya a "HKEY_LOCAL_MACHINE" en el menú de árbol / explorador de registro del lado izquierdo
Haga clic en "SOFTWARE" dentro de los registros "HKEY_LOCAL_MACHINE"
Haga clic en "JavaSoft" dentro de los registros de "SOFTWARE"
Haga clic en "Java Runtime Environment" dentro de la lista de registros "JavaSoft". Aquí puede ver las diferentes versiones de Java instalado.
Haga clic en "Java Runtime Environment" - En el lado derecho obtendrá 4-5 filas. Seleccione "CurrentVersion" y haga clic con el botón derecho (seleccione la opción de modificación) Cambiar la versión a "1.7"
Ahora la magia se ha completado
fuente
No sé si alguien todavía está siguiendo este hilo, pero recientemente tuve este problema cuando intenté iniciar ActiveMQ 5.10 como un servicio de Windows.
No tenía una ruta JAVA_HOME establecida. Tenía Java 6 y Java 7 instalados, pero la versión predeterminada era v7. (es decir, si abrí una ventana de comandos y escribí "java -version").
Aquí es donde estaba la pista: "java -version" devolvió "Java HotSpot (TM) 64-Bit Server VM (compilación 23.1-b03, modo mixto)" pero me habían instalado el servicio Win32 ...
Resulta que si usa el contenedor de Win32 en una máquina de 64 bits, de alguna manera decide usar una versión diferente de Java ...
Entonces, mi solución fue desinstalar la versión de 32 bits del contenedor e instalar la versión de 64 bits. aversión en mi máquina; solo un hábito, supongo ... Pero afortunadamente resolví el problema eventualmente ...
fuente
Para mi Win7
Paradox estaba en ser java.exe y javaw.exe en la carpeta System32. Al abrir esa carpeta no pude verlos, pero al usar la búsqueda en el menú Inicio, obtengo enlaces a esos archivos, los eliminé. Siguiente searsh me dio enlaces a archivos de JAVA_HOME
magia )
fuente
Cambie al directorio con la correcta,
java.exe
es decir, vaya a la versión de JDK requeridajava.exe
Ejecute
java.exe
desde este directorio, tiene prioridad sobre el registro y la configuración de $ PATH.fuente
Resolví este problema desinstalando Java 1.8
fuente
El tarro se compiló para ser
1.6
compatible. Por eso aparece este error. Dos resoluciones:1) Utilice Java 1.6
O
2) Vuelva a compilar el frasco para que sea compatible con su entorno
1.7
fuente
Usando regedit, elimine las entradas correspondientes a java 7. Funcionará.
fuente