Respuestas:
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 :
Descargue e instale Java JDK de Oracle
Asegúrese de que este Java se use en lugar de la versión OpenJDK utilizando los dos comandos siguientes:
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
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
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
/usr/java/default
en mi caja CentOS 6 con OpenJDK 1.6 y 1.7 instalado.
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.
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
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_HOME
va 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/bashrc
Modifiqué la configuración para JAVA_HOME
que 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 grep
y sed
para analizar el resultado. Seguramente alternatives
ofrece 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 alternatives
parece ser sólo sobre el JRE por defecto. Aplaudo a @Niels answer o simplemente instalo Java con yum
y 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.0
es un enlace simbólico /etc/alternatives/java_sdk_1.8.0
y, por lo tanto, establezco mi $ JAVA_HOME en /usr/lib/jvm/java_1.8.0
. En el /etc/bashrc
.
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.
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
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