105 votos

¿Cómo determinar JAVA_HOME en Debian/Ubuntu?

En Ubuntu, es posible tener varias Jvm al mismo tiempo. El valor predeterminado se selecciona con update-alternatives. Pero esto no establece la JAVA_HOME variable de entorno, debido a una política de debian.

Estoy escribiendo un lanzador de secuencia de comandos (bash), que inicia una aplicación java. Esta aplicación java necesidades de la JAVA_HOME variable de entorno. Entonces, ¿cómo obtener la ruta de acceso de la JVM que está actualmente seleccionado por update-alternatives?

149voto

danadam Puntos 1086

Algo así debe hacer el truco:

JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

52voto

rsaddey Puntos 281

solución de danadam fácilmente puede adoptarse para recuperar la ruta JDK (es decir, no JRE) según se requiera:

JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
  • Busca el compilador de Java javac (en vez de java) incluido en el JDK (pero no JRE).
  • No tiene se arrastra / (quitó por sed s:/bin... en vez de s:bin...)

15voto

David Puntos 91

export JAVA_HOME=$(dirname $(dirname $(readlink -f /usr/bin/java)))

En .bashrc fue muy útil para mí.

11voto

djangofan Puntos 2732

Así que, ¿estás diciendo que este comando no hace nada para ti?

sudo update-alternatives --config java 

2voto

djangofan Puntos 2732

Como una extensión de danadams respuesta:

Primero de todo, instalar el 2º Java JRE como la 3ª opción java, con la prioridad de "3":

sudo alternatives --install /usr/lib/jvm/jre jre /opt/IBM/java/jre/bin/java 3

A continuación, puedes ver la lista de ellos:

update-alternatives --list java

Puede establecer la alternativa con la mano , con esto:

sudo alternatives --config java /opt/IBM/java/jre/bin/java

A continuación, la secuencia de comandos puede establecer sobre la marcha, así:

sudo alternatives --set java /opt/IBM/java/jre/bin/java
JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

Esto ilustra mejor lo que es la 'sed' comando está haciendo. Aunque usted todavía necesita para establecer los vínculos para javaw y javac, etc, así, cada uno hecho por separado.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X