Acabo de actualizar de la versión 8 de Java a la versión 12. El sistema operativo es Windows 7 Home.
Como Oracle ya no proporciona un JRE separado, cuando ejecuto un programa necesito proporcionar el nombre de la carpeta para el ejecutable de Java. Para que sea más fácil cambiar la carpeta cuando se actualiza Java, puse una unión en una de mis carpetas y la agregué a mi RUTA. Pero no funciona. Aquí hay una sesión de línea de comandos ligeramente editada.
Primero verifique que el cruce y el camino estén bien:
D:\Peter\PC>dir jre*
27/09/2019 15:11 <JUNCTION> JREDir [C:\Program Files\Javajdk-12.0.1\bin]
D:\Peter\PC>dir jredir\java*
Volume in drive D is DATA
Volume Serial Number is CE44-C814
Directory of D:\Peter\PC\jredir
27/09/2019 11:36 148,328 java.dll
27/09/2019 11:36 51,048 java.exe
27/09/2019 11:36 226,664 javaaccessbridge.dll
27/09/2019 11:36 20,840 javac.exe
27/09/2019 11:36 20,840 javadoc.exe
27/09/2019 11:36 174,952 javajpeg.dll
27/09/2019 11:36 20,840 javap.exe
27/09/2019 11:36 51,048 javaw.exe
8 File(s) 714,560 bytes
0 Dir(s) 149,081,808,896 bytes free
C:\>path
PATH=C:\Program Files (x86)...ls\Binn\;D:\Peter\PC\JREDir
Ahora intenta ejecutar Java usando el nombre de la unión.
D:\Peter\PC>jredir\java -version
Error: opening registry key 'Software\JavaSoft\JRE'
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.
Esto parece encontrar el ejecutable de Java, pero necesita una clave de registro. Sin embargo, hacer un cd en el directorio del ejecutable funciona bien.
C:\Program Files\Java\jdk-12.0.1\bin>java -version
Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true
java version "12.0.1" 2019-04-16
Java(TM) SE Runtime Environment (build 12.0.1+12)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)
al igual que ejecutarlo con un nombre de directorio explícito:
D:\Peter\PC>"C:\Program Files\Java\jdk-12.0.1\bin"\java -version
Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true
java version "12.0.1" 2019-04-16
Java(TM) SE Runtime Environment (build 12.0.1+12)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)
Pero ejecutarlo usando la ruta no es así.
C:\>java -version
Error: opening registry key 'Software\JavaSoft\JRE'
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.
Entonces tengo dos preguntas:
- ¿Por qué no funciona el cruce? Probé un enlace simbólico pero tampoco funcionó.
- ¿Qué se necesita en el registro para que funcione?
Respuesta1
Sé que es una pregunta antigua, pero la comparto para referencia futura.
En el ejemplo, el cruce tiene un nivel demasiado profundo. No debería serlo C:\Program Files\Javajdk-12.0.1\bin
sino más bienC:\Program Files\Javajdk-12.0.1