Estoy tratando de averiguar qué variable de entorno utiliza Java para encontrar/detectar el JRE utilizado por C:\ProgramData\Oracle\Java\javapath\java.exe
.
Según el diseño de Oracle, los únicos archivos que tengo en el C:\ProgramData\Oracle\Java\javapath\
son
java.exe
javaw.exe
javaws.exe
Si configuro my JAVA_HOME
en vacío o en alguna carpeta aleatoria, ejecutar una aplicación java.exe
todavía funciona. Entonces solo puedo suponer que no está usando el JAVA_HOME
valor. Entonces, ¿cómo encuentra la carpeta JRE? ¿Está por defecto en algo específico? Tampoco tengo un JRE_HOME
conjunto de var.
Solución del problema
Este "nuevo" comportamiento de JDK de 8/64 bits está tan ofuscado que no podía adivinar por qué mi aplicación no se iniciaba, porque tenía el JDK (con el JRE privado) y la configuración de todas las variables de ruta, aún no se inicia. Después de un tiempo instalé JRE8 solo y funcionó. En primer lugar, las claves regedit solo las escribe el JRE público... Ok.
Luego quise saber qué Runtime usaba la aplicación, cambié el nombre de todos los java*.exe, pero aún funcionaba de 64 bits. Cambié el nombre de las claves regedit completamente nuevas. Todavía funcionó...
Fin de la historia: con Windows 64, las claves regedit están en
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft
(32 bits) y
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\JavaSoft
(64 bits)
y mi aplicación funcionó porque
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\JavaSoft\Java Runtime Environment\1.8\RuntimeLib\
señaló a jvm.dll que reverenciaba un enlace simbólico. Necesito una cerveza, quiero otro trabajo:-)
Aquí hay un buen enlace, que explica las claves Regedit y los diferentes "métodos de descubrimiento" que utiliza Java para encontrar la última versión instalada:
http://mindprod.com/jgloss/registry.html
Aún así, SYSLink - Change with JDK8 parece ser un cambio no documentado que se introdujo antes de JRE8u171.
Mi sysLink Path estaba C:\Program Files (x86)\Common Files\Oracle\Java
en realidad era una unión a un subdirectorio. Y el instalador JDK8 copia los archivos java*.exe en Windows\System32\ por cierto.
Más información:
http://makble.com/jdk-8-and-cprogramdataoraclejavajavapath - ¿Cuál es el sentido de
C:\ProgramData\Oracle\Java\javapath
(en Windows 10)?https://community.oracle.com/thread/4143254
https://douglascayers.com/2015/05/30/how-to-set-custom-java-path-after-installing-jdk-8/
Lo siento por mi diatriba, estoy tan frustrado en este momento. Espero que ayude a alguien más.
No hay comentarios.:
Publicar un comentario