Pregunta ¿Cómo determinar JAVA_HOME en Debian / Ubuntu?


En Ubuntu es posible tener múltiples JVM al mismo tiempo. El predeterminado se selecciona con update-alternatives. Pero esto no establece el JAVA_HOME variable de entorno, debido a una política debian.

Estoy escribiendo un script de inicio (bash), que inicia una aplicación java. Esta aplicación java necesita el JAVA_HOME Variable ambiental. Entonces, ¿cómo obtener la ruta de la JVM que está seleccionada actualmente por update-alternatives?


90
2018-05-20 15:09


origen




Respuestas:


Para el JRE, algo como esto debería hacer el truco:

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

133
2018-05-20 17:55



Necesitaba el hogar del JDK en lugar del JRE, pero obtuve esto usando: JAVA_HOME = $ (readlink -f / usr / bin / javac | sed "s: bin / javac ::") ¡Gracias! - Witek
cuando probé el comando echo $(readlink -f /usr/bin/java | sed "s:bin/java::"), la salida fue /usr/lib/jvm/java-7-oracle/jre/ y no /usr/lib/jvm/java-7-oracle/ - Sumit Ramteke
Código dado en rsaddey funciona correctamente - Sumit Ramteke


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

JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
  • Busca el compilador Java javac (en lugar de Java) incluido en JDK (pero no en JRE).
  • No tiene arrastre / (eliminado por sed s: / bin ... en lugar de s: bin ...)

43
2018-06-02 08:44





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

En .bashrc fue útil para mí


12
2018-04-25 09:34





Entonces, ¿estás diciendo que este comando no hace nada por ti?

sudo update-alternatives --config java 

9
2018-05-20 15:14



¿Se supone que debes configurar tu JAVA_HOME? Descubrí que update-java-alternative es una mejor manera de actualizar Java, ya que update-alternative no actualiza todas las alternativas relacionadas con Java. Ver askubuntu.com/questions/141791 - James McMahon
Es cierto, pero he encontrado instancias de Linux que tenían alternativas de actualización pero que no tenían instaladas las alternativas de actualización de Java. - djangofan


Instalé Java con

sudo apt-get install openjdk-7-jre-headless

y luego encontrar la ubicación

ls -al /etc/alternatives/java

3
2018-03-05 03:40





Como una extensión de danadams responde:

En primer lugar, instale el 2do JRE de Java como la tercera opción de java, con prioridad de "3":

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

A continuación, puede enumerarlos:

update-alternatives --list java

Puedes configurar la alternativa a mano, usando esto:

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

Luego, su script puede configurarlo 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 está haciendo el comando 'sed'. Aunque todavía es necesario establecer los enlaces para javaw y javac, etc., cada uno se realiza por separado.


2
2018-03-02 16:40





Hace un tiempo creé un tutorial en el foro de Ubuntu sobre cómo instalar el último JRE / JDK desde el sitio web de Java. También cubre cómo habilitarlo en todo el sistema, agregando la ubicación JRE / JDK a la variable PATH. Si lo desea, también puede agregar JAVA_HOME a la secuencia de comandos, mencionada al final del tema.

Echale un vistazo: http://ubuntuforums.org/showthread.php?t=1437100


1
2018-05-20 18:47