¿Cuál es el valor de JAVA_HOME para CentOS?

37

Instalé java a través de yum en CentOS, sin embargo, otro programa de Java necesita saber cuál es la variable de entorno JAVA_HOME. Sé todo sobre el establecimiento de variables ambientales, pero ¿a qué lo configuro? javaestá instalado en /usr/bin/java, no puede estar allí!

Rory
fuente

Respuestas:

54

En realidad lo encontré

es /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/. Descubrí lo que estaba haciendo update-alternatives --display javay me mostró el directorio/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java

Rory
fuente
20

No estoy muy seguro, pero si instala el RPMS normal, el valor JAVA_HOME también se puede establecer en esto:

/usr/java/default/

EDITAR: acabo de comprobar mi sistema de inicio. He creado este archivo:

/etc/profile.d/java.sh

Eso contiene:

export JAVA_HOME=/usr/java/default/

y estoy usando la versión oficial de Sun: jdk-1.6.0_12-fcs

EDITAR: así es como configuré Java en mi máquina :

Instalar Java

Descargue e instale Java JDK de Oracle

Hazlo primario

Asegúrese de que este Java se use en lugar de la versión OpenJDK utilizando los dos comandos siguientes:

primero

alternatives --install /usr/bin/java java /usr/java/default/bin/java 999999 \
           --slave /usr/bin/keytool keytool /usr/java/default/bin/keytool \
           --slave /usr/bin/rmiregistry rmiregistry /usr/java/default/bin/rmiregistry

Segundo

alternatives --install /usr/bin/javac javac /usr/java/default/bin/javac 999999 \
           --slave /usr/bin/jar jar /usr/java/default/bin/jar \
           --slave /usr/bin/rmic rmic /usr/java/default/bin/rmic

Establecer JAVA_HOME

Asegúrese de que todos los usuarios tengan su variable de entorno JAVA_HOME establecida en el valor correcto:

echo "export JAVA_HOME=/usr/java/default/" > /etc/profile.d/java_home.sh
Niels Basjes
fuente
Oh, interesante. :)
Rory el
1
No hay /usr/java/defaulten mi caja CentOS 6 con OpenJDK 1.6 y 1.7 instalado.
Daniel Serodio
@DanielSerodio Correcto. Describí claramente "Descargue e instale Java JDK de Oracle", y luego existe.
Niels Basjes
2

Desea configurar JAVA_HOME para que sea la ubicación raíz del JDK o JRE, por ejemplo:

export JAVA_HOME=/usr/java/jdk1.3

Si el JDK (kit de desarrollo) está instalado, probablemente desee que apunte a eso, de lo contrario utilice la ruta JRE (Java Runtime Environment). Entonces, es posible que desee establecer su variable de entorno $ PATH para incluir también el directorio bin:

export PATH=$PATH:/usr/java/jdk1.3/bin

Si está utilizando tomcat, es posible que también deba configurar CATALINA_HOME para el usuario de tomcat.

export CATALINA_HOME=/path/to/tomcat

Para configurar esto para el sistema que desea editar su / etc / profile o agregar un archivo .sh en la carpeta /etc/profile.d. Para un usuario en particular, puede colocarlo en los archivos ~ / .profile o ~ / .bash_profile de los usuarios.

Kyle Brandt
fuente
Me pregunto si hay una buena razón la instalación no hacer esto para usted si Ejecutar como superusuario, siempre les resulta irritante ...
Kyle Brandt
2

A continuación siempre funciona perfectamente para mí:

[user@base ~]$ locate bin/java
/usr/bin/java
/usr/bin/javac
/usr/bin/javadoc
/usr/bin/javaws
/usr/java/jdk1.6.0_31/bin/java
/usr/java/jdk1.6.0_31/bin/javac
/usr/java/jdk1.6.0_31/bin/javadoc
/usr/java/jdk1.6.0_31/bin/javah
/usr/java/jdk1.6.0_31/bin/javap
/usr/java/jdk1.6.0_31/bin/javaws
/usr/java/jdk1.6.0_31/jre/bin/java
/usr/java/jdk1.6.0_31/jre/bin/java_vm
/usr/java/jdk1.6.0_31/jre/bin/javaws

Significa que puedo configurar JAVA_HOME como /usr/java/jdk1.6.0_31

prashant
fuente
1

Consideré el problema de si uno cambia la versión de java que se usa con:

alternatives --config java

Entonces, cualquier código rígido JAVA_HOMEva a cambiar (al menos lo hará en el Centos 6.6 que estoy viendo actualmente). Es decir, no hay /usr/java.

Esta no parece ser la mejor manera (abierta al fracaso), pero en los 10 minutos que he pasado en esto parece la mejor.

En /etc/bashrcModifiqué la configuración para JAVA_HOMEque sea:

export JAVA_HOME=$(alternatives --display java | grep current | sed 's/link currently points to //' | sed 's|/bin/java||')

Tienes que hacer algo similar en MacOSX pero sin todo grepy sedpara analizar el resultado. Seguramente alternativesofrece una solución similarmente más fácil.

De todos modos espero haber ayudado.


Actualizar

No, eso sería JRE_HOME. El JDK / SDK no está demostrando ser tan obvio (seguiré buscando).

El alternativesparece ser sólo sobre el JRE por defecto. Aplaudo a @Niels answer o simplemente instalo Java con yumy configuro JAVA_HOME para eso (¡el truco es donde encontré dónde estaba instalado!).

yum install java-1.8.0-openjdk-devel.x86_64
cd /usr/lib/jvm 

Me di cuenta de que java_1.8.0es un enlace simbólico /etc/alternatives/java_sdk_1.8.0y, por lo tanto, establezco mi $ JAVA_HOME en /usr/lib/jvm/java_1.8.0. En el /etc/bashrc.

HankCa
fuente
0

Eso es extraño, el objetivo de tener una variable de entorno JAVE_HOME es que no tiene que especificar la ruta a cada programa, puede obtener esta ruta buscando esta variable.

De cualquier manera, la forma correcta de encontrar la variable ambiental para JAVA_HOME es usar echo:

[root@host ~]# echo $JAVA_HOME
/usr/java/j2sdk1.4.2_09

La ejecución de este comando mostrará la ruta, sin importar qué versión esté ejecutando, desde la línea de comandos.

Dave Drager
fuente
2
La variable no se había establecido.
Rory el
0

re: Centos7, consulte el archivo /etc/java/java.conf.

en él JAVA_HOME se indica que se encuentra en el siguiente directorio: / usr / lib / jvm / java

Lo comprobé, es la versión correcta del jdk que cargué a través de yum, y así ...

mi env no tiene JAVA_HOME configurado de forma predeterminada, por lo tanto, lo configuré en .bash_profile

theRiley
fuente
0

Descubrí que el administrador de paquetes puede ubicarse en una variedad de ubicaciones, por lo que usar cuál (necesitará instalar esto explícitamente si usa un contenedor) lo siguiente es un poco menos frágil

javaCompiler=$(which javac)
javaBin=$(dirname $(readlink -f $javaCompiler))
javaHome=${javaBin%/*}
export JAVA_HOME=$javaHome

o para JRE

javaExec=$(which java)
javaBin=$(dirname $(readlink -f $javaExec))
javaHome=${javaBin%/*}
export JRE_HOME=$javaHome
Jules Clements
fuente