Comenzando con Java (3) - La variable JAVA_HOME (Windows)

domingo, 21 de marzo de 2010

Normalmente cuando estamos comenzando a usar Java nos encontramos con que tenemos que agregar el JAVA_HOME (el directorio de instalación de Java) a las variables de entorno de Windows. Pues bien, para esa "primera vez" me he dado a la tarea de escribir este pequeño tutorial. Para este tutorial debemos tener presentes los siguientes conceptos:

Variables de entorno
Autoexec.bat
PATH: Que es donde el intérprete de comandos buscará los comandos de ejecución que escribamos en la consola, siempre y cuando no usemos una ruta específica para llamar al comando.

La idea del JAVA_HOME es que agreguemos una nueva variable de entorno a nuestro sistema. En este caso JAVA_HOME es el nombre de facto, aunque podría ser cualquier otro, lo importante es que además lo agreguemos al PATH para que Windows pueda reconocer los comandos de Java. Incluso podríamos no definir la variable JAVA_HOME y hacerlo todo directamente sobre la variable PATH, pero por convención y practicidad es mejor definirla, esto te será más claro conforme sigas usando Java.
Para agregar la nueva variable de entorno hay dos caminos a seguir.

El primero es usando la ventana de Propiedades del sistema de Windows.
(La forma en que siempre lo hago)

1. Hacer la combinación de teclas Inicio(la tecla de la ventanita) + Pausa para abrir la ventana de Propiedades del sistema.



2. Dentro de la ficha Opciones avanzadas, oprimir el botón Variables de entorno, lo que abrirá una nueva ventana titulada Variables de entorno.


Nota: Dentro de las variables de entorno tenemos las Variables de usuario y las Variables del sistema, las primeras funcionan mientras la sesión del usuario para la cuál está definida está abierta, las otras funcionan para todos los usuarios y se necesitan permisos de administrador para definirlas. Preferentemente yo siempre uso las Variables de sistema, a menos que haya una situación particular que requiera que use las variables de usuario.

3. En la sección de las Variables del sistema haremos clic sobre el botón Nueva, esto nos abrirá un pequeño cuadro de diálogo donde agregaremos los siguientes valores:
* en la caja Nombre de variable: JAVA_HOME
* en la caja Valor de variable: la ubicación donde hayas instalado el JDK, en mi caso C:\Archivos de programa\Java\jdk1.6.0_18 y hacer clic en Aceptar.


4. Buscar la varibla de sistema llamada Path y hacer clic en Modificar.
5. En el campo Valor de variable de la ventana de diálogo Modificar variable de sistema agregaremos nuestra nueva variable de entorno al final del valor existente separándolo por un punto y coma (;) de la siguiente forma: ;%JAVA_HOME%\bin;

De esta forma estamos haciendo referencia a la carpeta bin (donde están los comandos de ejecución) de la instalación de Java usando la variable JAVA_HOME que hemos creado en los pasos anteriores. También podríamos haber escrito directamente la ruta de la instalación del JDK en el Path, pero como lo he dicho antes, es preferible hacerlo de esta forma.

Después de estos pasos simplemente deberemos hacer clic en el botón Aceptar de cada ventana y tendremos agregada nuestra nueva variable de entorno.

Otra forma es haciéndolo directamente desde la ventana de linea de comandos:

1. Hacer la combinación de teclas Inicio + R para abrir la ventana Ejecutar, y escribir cmd y hacer clic en Aceptar. Esto abrirá una ventana de linea de comandos.


2. En la ventana de linea de comandos escribir: set JAVA_HOME=, nuevamente, en mi caso la ruta de instalación es "C:\Archivos de programa\Java\jdk1.6.0_18"

Nota
: Las comillas no son necesarias a menos que tengamos espacios en blanco en nuestra ruta, como en este caso.

3. Posteriormente, en la misma ventana, habrá que agregar esta variable al Path de esta forma: set Path=%Path%;%JAVA_HOME%\bin;


Con esto habremos agregado la nueva variable de entorno, pero solo estará disponible mientras permanezca abierta la sesión de la linea de comandos. Para hacer permanente nuestras variables de otra forma, podemos agragarlas al Autoexec.bat para que se carguen siempre que arranque el sistema.

Agregar las variables de entorno en el Autoexec.bat

1. Abrimos una ventana de Ejecutar como en el paso uno de la sección anterior y escribimos sysedit y hacemos clic en Aceptar.
2. En la ventana de AUTOEXEC.BAT agregamos las lineas
@echo off
JAVA_HOME="C:\Archivos de programa\Java\jdk1.6.0_18"
Path=%Path%;%JAVA_HOME%\bin;


Y después de guardar el archivo, preferentemente, reinicia el sistema.

Nota: Gracias a un comentario, debo remarcar que en versiones posteriores a Windows ME las variables de entorno se deben agregar por medio de la ventana de Propiedades del sistema y no por la modificación del archivo autoexec.bat, aunque aun es posible.

La prueba

Para comprobar que verdaderamente se ha agregado la nueva variable de entorno abre una ventana de línea de comandos y escribe java -version, y el resultado de ejecutar esta línea deberá ser algo similar a esto:


Para más inromación sobre comandos del DOS, el Autoexec.bat y en general sobre las variables de entorno, dejo estos enlaces:
Variables de entorno
Environment variables
Autoexec.bat (inglés)
Autoexec.bat (español)
Config.sys y Autoexec.bat
How do I set or change the PATH system variable?

20 comentarios:

Anónimo dijo...

Las variables al Autoexec.bat ya no van

Jesfre dijo...

Tienes mucha razón. Pero le agrego que "ya no debería hacerse así, pero aun se puede" XD. Agregaré la nota...
Muchas gracias.

stanxz dijo...

Gracias ... era justo lo que necesitaba aca en la chamba

Anónimo dijo...

Gracias muy util

Anónimo dijo...

De todos los tutoriales para la alta de variables de entorno que he visto, este es uno de los más completos y sencillos...
Gracias! :D

Ethan dijo...

Gracias por el tutorial, me ha ayudado con un problema que tenía.

Pablo Herrera R dijo...

Una consulta, si no tengo permisos de administrador en mi equipo, como puede hacer para trabajar con Apache Tomcat sin tener que agregar la variable JAVA_HOME. Espero me puedas ayudar, gracias.

Jesfre dijo...

@Pablo Herrera, puedes modificar el archivo por lotes que inicia Tomcat.
<CATALINA_HOME>/bin/startup.bat
Agregando la siguiente línea (ejemplo):
set JAVA_HOME=<RUTA_A_TU_JDK>
Esto "le dirá" explícitamente a Tomcat dónde encontrar la máquina virtual sin buscar en las variables del sistema.

Michael, the kid dijo...

hey! gracias!

Catratux dijo...

Gracias compadre!! Me lo ensenaron en UM pero no me acordaba jejeje saludos!

Felipe Ortega dijo...

hola.

No he podido realizar la parte de Agregar las variables de entorno en el Autoexec.bat

pues cuando busco "sysedit" en ejecutar, me sale un letrero de windows que dice: "No se puede encontrar el archivo "sysedit". asegúrese de que el nombre este escrito correctamente e inténtelo de nuevo"

que puedo hacer?
Gracias

Unknown dijo...

Mil gracias, queriendo instalar el IDE de android me salio este error :)

Anónimo dijo...

Me parecía que tenía que ser fácil encontrar un tutorial como este. Pues suerte que lo has escrito, porque todo el mundo lo da por hecho. Muchísimas gracias. Necesitaba hacer un bat para portabilizar un programa.

Unknown dijo...

Es posible tener dos variables JAVA_HOME? .. por ejemplo para:



C:\Program Files\Java\jdk1.7.0_45

C:\Program Files (x86)\Java\jdk1.6.0_27

Jesfre dijo...

Si intentas setearlo dos veces, digamos, en las variables del sistema de Windows, lo único que sucede es que el primer valor será reemplazado por el segundo.

Lo que podrías hacer es (lo que yo he hecho):
1. Por línea de comandos setear el JAVA_HOME con el JDK que utilizarás para esa sesión.
2. Tener un JAVA_HOME y JAVA_HOME_64, y en el PATH alternar entre uno y otro dependiendo del programa que quieres ejecutar. Si seteas los dos al mismo tiempo en el PATH, no podría predecir el comportamiento, lo más probable es que pervalezcan los ejecutables del 2o.

Esto lo podrías hacer via línea de comandos, o cualquier IDE moderno debería permitirte agregar distintos JDK o setear el JAVA_HOME que deberá utilizar, aunque por defecto buscarán exactamente la variable JAVA_HOME.

En ocasiones necesitarás ejecutar distintos programas a la vez y que requerirán tal vez distintas versiones de Java, por lo que requerirías distintos JAVA_HOME, lo que podrías hacer aquí es averiguar cómo puedes asignarle directamente al programa la ubicación de la versión de Java que necesita. Por ejemplo, para Eclipse existe el .ini donde puedo setear la ubicación de Java que se usará para correr el IDE.

Espero te sirva.

Fito dijo...

Gracias por el manual. Lo necesitaba pera resolver el problema de instalación del SDK de Android que no encuentra la instalación de Java.

Jhon Mario Lemos dijo...

Gracias por el tutorial, llevaba tiempo tratando de probar el java y al fin lo he logrado a este post.


------------------------------
mi firma

Jordi dijo...

Muchas gracias, me fue de ayuda.

Anónimo dijo...

Buenas tardes, espero me pueda ayudar, he realizado todos los pasos de este manual para poder crear la variable JAVA_HOME en las configuraciones del sistema, pero sigo presentando un error en la ruta. A que se debe?

Jesfre dijo...

@Anónimo, puede deberse a diversas razones:
* La herramienta que intentas correr y que requiere el JAVA_HOME espera la ubicacion al /bin del JDK en vez de la del JRE.
* Depende de cómo estés intentando configurarla, si tu ruta contiene espacios intenta usar comillas dobles JAVA_HOME="C:\Ruta al JDK\"
* Estás asignando mal la ruta.

Puedes compartir el error que te aparece, tu configuración, y la ruta donde tienes instalado el JDK de Java?