¿Cómo configurar JAVA_HOME para Java?

303

He instalado una versión de Java. ¿Cómo podemos establecer la $JAVA_HOMEvariable de entorno correctamente?

Gaurav Agarwal
fuente

Respuestas:

422

Puede configurar su JAVA_HOMEen /etc/profilecomo Petronila Escarabajo sugiere. Pero la ubicación preferida para JAVA_HOMEo cualquier variable del sistema es /etc/environment.

Abra /etc/environmenten cualquier editor de texto como nanoo gedity agregue la siguiente línea:

JAVA_HOME="/usr/lib/jvm/open-jdk"

(el camino de Java podría ser diferente)

Use sourcepara cargar las variables, ejecutando este comando:

source /etc/environment

Luego verifique la variable, ejecutando este comando:

echo $JAVA_HOME

Actualizar

Por lo general, la mayoría de los sistemas Linux fuente / etc / environment por defecto. Si su sistema no lo hace, agregue la siguiente línea a ~/.bashrc(Gracias @pje)

source /etc/environment
Manula Waidyanatha
fuente
2
Cuando intenté ejecutar Android Studio (que tiene IntelliJ IDEA como base), recibí un mensaje de error muy similar al de @ advocate: "'tools.jar' parece no estar en Android Studio classpath". Después de jugar mucho con JAVA_HOME sin éxito, decidí echar un vistazo a studio.sh, el shellscript que inicia Android Studio. Como una conjetura, configuré JDK_HOME con el mismo valor esperado para JAVA_HOME, ¡y listo! Se instaló sin grandes problemas.
Hilton Fernandes
3
Para aquellos que realizan desarrollo de software, no coloque su JAVA_HOME en / etc / environment a menos que desee reiniciar cada vez que cambie las versiones de JDK.
HDave
2
Esta es una solución temporal, como otros señalaron. Nadie querría ejecutar código fuente cada vez que reinicie su bash.
yuranos87
66
Como otros han señalado, esto no se pega entre las sesiones terminales. Lo que hice para abordar esto es agregar la línea source /etc/environmenten la parte superior de mi archivo de configuración bash ~/.bashrcpara que cargue todas las configuraciones de mi entorno al inicio. Trabajando para mí hasta ahora.
pje
2
@sedulam He actualizado la respuesta
Manula Waidyanatha
79

Para establecer JAVA_HOMEla variable de entorno, haga lo siguiente:

  1. Inicie Terminal presionando Ctrl+ Alt+ Ten su teclado.
  2. Ingrese el siguiente comando:
    $gksudo gedit /etc/environment
  3. Dependiendo de dónde instaló su Java, deberá proporcionar la ruta completa. Para este ejemplo, instalé Oracle JDK 7 en el /usr/lib/jvm/java-7-oracledirectorio.
    Desplácese hasta el final del archivo e ingrese lo siguiente:
    JAVA_HOME=/usr/lib/jvm/java-7-oracle
    export JAVA_HOME
  4. Guarde su archivo y salga de gedit .
  5. Por último, vuelva a cargar la RUTA del sistema con el siguiente comando:
    $. /etc/environment

El método anterior le ahorrará la molestia de tener que ejecutar los comandos cada vez que inicie sesión en su computadora.

Petronilla Escarabajo
fuente
55
Cómo . / etc / trabajo ambiental?
Sudip Bhandari
1
¿Es necesario agregar el exportcomando en el /etc/environment?
pkaramol
@pkaramol Tuve que agregar la exportación JAVA_HOME en 16.04LTS para que se cargue al inicio.
adeen-s
3
@ adeen-s ¿Agregaste exporta una línea /etc/environmenty ayudó? Ese archivo contiene definiciones variables analizadas como =pares nombre-valor delimitados; su contenido no se ejecuta como comandos. (Ver man pam_env.) Entonces, a menos que esté tratando el archivo por separado como si fuera un script (como al pasar /etc/environmenta bash ./ sourcebuiltin), no esperaría que eso funcione.
Eliah Kagan
> Cómo lo hace. / etc / trabajo ambiental? -. (punto) carga comandos de un archivo askubuntu.com/a/232938/189965
Roman Bekkiev
37

Si no conoce la ruta y solo tiene instalado openJDK, puede escribir update-alternatives --config javay debe encontrar la ruta. Para establecer la variable puede escribir JAVA_HOME=<PATH>seguido de export JAVA_HOME. Observe que no hay espacio al declarar la variable. Para verificar si la variable está almacenada, simplemente escriba echo $JAVA_HOMEpara verificar.

Erro
fuente
Esto parece que sería estático. Si elimino openjdk-7 e instalo openjdk-9, ¿JAVA_HOME no señalará el lugar equivocado? ¿Cómo se puede hacer dinámico?
DavidJ
3
Al cambiarlo manualmente. Una vez más, USTED es la forma en que se vuelve dinámico ...
HDave
Lo que @HDave significa es que, en ciertos casos, es posible que desee que JAVA_HOME apunte a una versión específica de Java, por lo que hacer que la actualización de JAVA_HOME Dynamic no sea lo que desea.
Maciej
Me gusta esta respuesta. Probé con eco y vi mi camino. Sin embargo, estoy confundido por qué sigo obteniendo la variable de entorno JAVA_HOME no se establece cuando ejecuto mvn -version
Winnemucca
1
Escribí esta respuesta cuando era más ignorante. Establecer la variable como se describe solo afectará su sesión de terminal actual y no se mantendrá. La forma correcta es ejecutar, update-alternatives --install <link> <name> <target> <priority> por ejemplo:update-alternatives --install /usr/bin/java java /usr/lib/jvm/default-runtime/bin/java 1
Erro