GOOGLE ADS

jueves, 21 de abril de 2022

¿Qué JRE usa C:\ProgramData\Oracle\Java\javapath\java.exe?

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_HOMEen vacío o en alguna carpeta aleatoria, ejecutar una aplicación java.exetodavía funciona. Entonces solo puedo suponer que no está usando el JAVA_HOMEvalor. Entonces, ¿cómo encuentra la carpeta JRE? ¿Está por defecto en algo específico? Tampoco tengo un JRE_HOMEconjunto 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\Javaen 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

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...