¿Cómo encontrar mi JAVA_HOME actual en ubuntu?


Respuestas:


84

Escriba en la terminal,

echo $JAVA_HOME

Mostrar ruta variable JAVA_HOME.

SI NADA APARECE ENTONCES CONFIGURAR CON ESTO

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

Esto diferirá según su tipo y versión de JDK

Para mostrar siga el primer comando.

Siga esta publicación para usar diferentes JDK o cambie entre JDK


Da "/ usr / lib / jvm / java-6-sun". Pero he instalado java 7. Cuando lo reviso usando "java -version" me da la versión java "1.7.0_45" Java (TM) SE Runtime Environment (build 1.7.0_45-b18) Java HotSpot (TM) Server VM (build 24.45-b08, modo mixto)
Samitha Chathuranga

2
luego ejecute el segundo comando para configurar la variable JAVA_HOME. NOTA:JAVA_HOME doesn't make jdk default, it just makes JAVA_HOME variable set to a path & if you want to use different jdk installed on same machine then check my answer, I have edited it.
Profundizar

deberías configurarlo en / etc / environment
keiki

@ Jax-L Pero ahora, cuando doy eco JAVA_HOME, solo se muestra como "JAVA_HOME". El camino que di no se muestra ... ???
Samitha Chathuranga

2
export funciona solo hasta que reinicie. O agrega exportar al script de inicio de sesión .bashrc. Pero la forma correcta de establecer tales variables de entorno es en / etc / environment
keiki

34

Si tiene JDK 1.6 (correspondiente a Java 6) o una versión más reciente instalada, debe tener un programa nombrado jrunscripten su PATH. Puede usar esto para encontrar el correspondiente JAVA_HOME. Ejemplo:

$ jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
/opt/local/jdk1.7.0_76/jre

Puede establecer la variable de entorno de esta manera:

$ export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

Tenga en cuenta que el JRE no incluye jrunscript, por lo que esto solo funcionará si instala el JDK, no solo el JRE.


Fue mucho por lo que pasar para descubrir que necesitaba ir un directorio más profundo, pero gracias.
cnizzardini

15

Otra opción portátil es extraer la ruta absoluta del JDK de javac:

export JAVA_HOME=`type -p javac|xargs readlink -f|xargs dirname|xargs dirname`

La javacruta absoluta se pasa dirnamedos veces para eliminar /bin/javacdel final. La extracción completa del directorio es la siguiente:

$ type -p javac
/usr/bin/javac

$ readlink -f /usr/bin/javac
/usr/lib/jvm/java-8-oracle/bin/javac

$ dirname /usr/lib/jvm/java-8-oracle/bin/javac
/usr/lib/jvm/java-8-oracle/bin/

$ dirname /usr/lib/jvm/java-8-oracle/bin/
/usr/lib/jvm/java-8-oracle/

1
se puede usar type -p javac|xargs readlink -f|xargs dirname|xargs dirname(sin la parte de exportación) para conocer el directorio sin configurarlo.
Mina Michael

¡Exactamente lo que estaba buscando! Brillante respuesta!
Silviu Burcea

7

Para tener en cuenta el mecanismo de actualización de alternativas:

$ update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre'

Puede establecer la variable de entorno de esta manera:

$ export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre')"

Esto no le da a JAVA_HOME, ya que todavía tendrá el final /jre. Puede intentarexport JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | sed -e 's/Value: //;s?/jre/bin/java??;')"
James Brusey

7

Solo ejecuta un comando

 sudo update-alternatives --config java

Dará algo como

Es gibt nur eine Alternative in Link-Gruppe java (die /usr/bin/java bereitstellt): /usr/lib/jvm/java-8-oracle/jre/bin/java

De esto tienes / usr / lib / jvm / java-8-oracle / as java home. Ahora puede exportarlo a la variable JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/

Ahora echo $ JAVA_HOME muéstralo


1

Lo uso en Ubuntu LTS (14.04 / 16.04):

[ -L /etc/alternatives/java ] && 
  export JAVA_HOME="$(readlink -f /etc/alternatives/java | sed -e 's/\/jre\/bin\/java$//')"


0

Para Java 9 y posterior:

Esta respuesta https://askubuntu.com/a/657468/963 usa el motor de JavaScript Nashorn adjunto Nashorn para imprimir la java.homepropiedad del sistema. Nashorn está en desuso, por lo que una alternativa es usarlo jshellintroducido en Java 9.

echo 'System.out.println(java.lang.System.getProperty("java.home"));' | jshell  -

que en mi sistema Ubuntu 18.10 se imprime:

/usr/lib/jvm/java-11-openjdk-amd64
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.