Windows ignora JAVA_HOME: ¿cómo configurar JDK como predeterminado?

¿Cómo puedo convencer a Windows para que use el JDK en lugar de JRE?

Esta pregunta se ha formulado antes, aquí y en otros lugares:

¿Cómo configuro la instalación / tiempo de ejecución Java por defecto (Windows)?

El problema es que Windows ignora JAVA_HOME y también ignora el hecho de que hice del directorio JDK bin la primera entrada en la ruta.

Cuando ejecuto java -version desde la línea de comandos, en lugar de invocar mi instalación de JDK 1.6, ejecuta 1.7 JRE.

Supongo que este es un problema específico de 1.7 y Windows 7 está haciendo algo que no debería con el registro.

¿Alguna idea sobre cómo solucionar este problema?

Editar : Oops. Escribí “primera entrada en el classpath” arriba, cuando quise decir “ruta”. Lo siento.

En Windows, el ejecutable de java usa el Registro de Windows para ubicar la versión predeterminada de Java para ejecutar.

La copia de java.exe para ejecutar se encuentra utilizando la PATH entorno PATH . A menos que tome medidas para cambiar esto, de manera predeterminada se encontrará una copia en el directorio de Windows. Como esta copia no se encuentra en un directorio de tiempo de ejecución de Java, la busca al consultar el registro.

Por lo tanto, debe modificar el registro o colocar la versión de Java que desee antes del directorio de Windows en su PATH .

Tengo este problema también. Estoy ejecutando 1.6 pero quiero construir el código en el que estoy trabajando con 1.5. Cambié JAVA_HOME y PATH (tanto usuario como sistema) sin ningún resultado.

La respuesta es que el instalador para 1.6 eliminó java.exe, javaw.exe y javaws.exe en mi carpeta Windows \ System32 (Windows 7).

Lo resolví cambiando el nombre de esos archivos a java_wrong.exe, javaw_wrong.exe y javaws_wrong.exe. Solo después de hacerlo, recoge la versión correcta de java tal como se define en JAVA_HOME y PATH. Cambié el nombre de los archivos porque eso los eliminó de manera fácilmente reversible.

¡Espero que esto ayude!

En Windows 8, es posible que desee eliminar el directorio C:\ProgramData\Oracle\Java\javapath .

de camino

Solucionó mi problema.

Windows no ignora nada. Este es un problema con su configuración; Windows solo usa lo que usted proporciona. No tiene un conocimiento especial de JAVA_HOME .

CLASSPATH no tiene nada que ver con Windows, tampoco. Para Windows, solo es una variable ambiental que se expande a una ubicación de carpeta.

Verifique su %PATH% entorno %PATH% . Es lo que hace que Windows encuentre uno antes que el otro. La ruta (como dijo la publicación a la que se enlazó) debe apuntar a %JAVA_HOME%\bin; . Nuevamente, la publicación a la que se vinculó le dio una forma de configurar esto usando un archivo por lotes.

(Para otros que quizás no lo sepan: la forma más fácil de inspeccionar%% PATH% es abrir un símbolo del sistema y escribir echo %PATH% . También puede obtenerlo haciendo clic con el botón derecho en Computer en el panel derecho del menú Inicio y elegir Properties , luego Advanced System Settings y el botón de Environmental Variables .)

Tuve el mismo problema. Tengo un montón de versiones de Java instaladas y, por alguna razón, se estaba utilizando Java 1.7 en lugar de Java 1.6, aunque especifiqué en la ruta para usar 1.6 (C: \ jdk1.6.0_45_32 \ bin).

Tuve que mover la ruta del JDK que quería usar (1.6) para ser la primera entrada en la variable de entorno PATH para asegurarme de que Windows usa 1.6 en lugar de 1.7.

Entonces, por ejemplo, la variable de entorno PATH anterior era:

 C:\Program Files (x86);...;C:\dev\ant181\bin;C:\jdk1.6.0_45_32\bin 

y después de mover el jdk para ser el primero, funcionó:

 C:\jdk1.6.0_45_32\bin;C:\Program Files (x86);...;C:\dev\ant181\bin 

Supongo que el instalador de Windows de Java 1.7 lo instaló en algún otro directorio que ya estaba en la RUTA, por lo que se usa primero en lugar de la entrada PATH personalizada especificada C: \ jdk1.6.0_45_32 \ bin;

Para mi caso en 'Path' variable 'Path' , se agregó un parámetro como ‘ C:\ProgramData\Oracle\Java\javapath; ‘. Esta ubicación tenía java.exe , javaw.exe y javaws.exe de java 8, que se acaba de instalar a través de jdk.exe desde Oracle.

He eliminado este texto de Ruta donde mi Ruta ya tiene %JAVA_HOME%\bin con él.

Ahora, la variable 'JAVA_HOME' controla mi versión de Java, que es lo que quería.

Tenía Java 7 y 8 instalados y deseo redireccionar a java 7, pero la versión de java en la ventana del indicador de mi cmd muestra Java 8.
Se agregó la ruta del directorio bin de Java 7 ( C: \ Archivos de progtwig \ Java \ jdk1.7.0_10 \ bin ) a la variable PATH al final, pero no funcionó y muestra Java 8. Así que cambié la ruta de Java 7 al inicio de el valor de la ruta y funcionó.
Abrí una nueva ventana de solicitud cmd y revisé mi versión java y ahora muestra Java 7

Establezca la variable de entorno Path en el directorio jdk / bin que desee

En mi caso, tenía Java 7 y 8 (ambos x64) instalados y deseo redireccionar a java 7, pero todo está configurado para usar Java 8. Java usa la variable de entorno PATH:

C: \ ProgramData \ Oracle \ Java \ javapath

como la primera opción para buscar su tiempo de ejecución de la carpeta (es una carpeta oculta). Esta ruta contiene 3 enlaces simbólicos que no se pueden editar.

En mi pc, la variable de entorno PATH se ve así:

C: \ ProgramData \ Oracle \ Java \ javapath; C: \ Windows \ System32; C: \ Archivos de progtwig \ Java \ jdk1.7.0_21 \ bin;

En mi caso, debería verse así:

C: \ Windows \ System32; C: \ Archivos de progtwig \ Java \ jdk1.7.0_21 \ bin;

Tuve que cortar y pegar los enlaces simbólicos en otro lugar para que Java no pueda encontrarlos, y puedo restaurarlos más tarde.

Después de establecer las variables de entorno JAVA_HOME y JRE_HOME en los tiempos de ejecución de las carpetas java deseadas (en mi caso es Java 7), el comando java -version debería mostrar el tiempo de ejecución de java deseado. Destaco que no hay necesidad de meterse con el registro.

Probado en Win7 x64.

enter image description here Supongamos que tiene que instalar JDK 10 después de JDK 8 y en la variable de entorno del sistema establecer una ruta como “C: \ ProgramData \ Oracle \ Java \ javapath” y luego controlar la versión de Java por esta ruta. Ignorará JAVA_HOME incluso la ruta jdk 1.8 establecida aquí. Por lo tanto, elimine “C: \ ProgramData \ Oracle \ Java \ javapath” en la ruta para obtener el efecto de la ruta JAVA_HOME.

Hay un factor adicional aquí; Además de los ejecutables java que la instalación java pone dondequiera que le pidas que los coloque, en Windows, el instalador java también coloca copias de algunos de esos ejecutables en el directorio windows system32, por lo que probablemente uses cada ejecutable java. instalado más recientemente.

Por si acaso, si está utilizando el archivo .BAT como servicio de Windows, le sugiero que desinstale el servicio de Windows y lo vuelva a instalar después de cambiar el% JAVA_HOME% para que apunte a la versión de Java correcta.