readlink
La commande vous montrera le chemin complet du lien symbolique :
readlink -f `which java`
Le mieux que vous puissiez faire est d'éviter complètement le Java de Red Hat.
Obtenez votre java d'Oracle et mettez-le dans /opt. Ensuite, créez simplement le lien symbolique /opt/java -> /opt/jdk-someversion, et créez /etc/profile.d/java.sh contenant
#!/bin/sh
export JAVA_HOME=/opt/java
export PATH=$JAVA_HOME/bin:$PATH
Ensuite, pour changer Java à l'échelle du système, changez simplement le lien symbolique dans opt. Pour utiliser plusieurs versions de Java, utilisez des scripts comme ci-dessus avec JAVA_HOME approprié.
De plus, le script /sbin/service utilisé pour exécuter les scripts /etc/init.d arrachera les variables d'environnement - exécute env -i explicitement. Donc, c'est-à-dire que votre tomcat n'obtiendra pas JAVA_HOME, vous devrez créer setenv.sh dans $CATALINA_BASE/bin.
L'inconvénient de cette approche est que vous ne recevez pas les mises à jour Java de Red Hat.
Tout d'abord, essayez echo $JAVA_HOME
depuis la ligne de commande. Depuis java
est déjà sur votre chemin, JAVA_HOME
peut être défini.
Quelle est la meilleure façon de déterminer le répertoire d'installation de mon installation Java
Lancer la commande which java
vous indiquera où java
est installé.
puis définissez JAVA_HOME
Vous pouvez modifier ~/.bashrc
, ~/.bash_profile
, ou /etc/profile
pour définir JAVA_HOME
. Réglage en ~/etc/profile
le définira à l'échelle du système, et ce n'est probablement pas ce que vous voulez. Dites à titre d'exemple la sortie de which java
est /opt/jdk_1.7.0_25
, alors il vous suffirait d'ajouter export JAVA_HOME=/opt/jdk_1.7.0_25
à ~/.bashrc
ou ~/.bash_profile
puis exécutez source ~/.bashrc
(ou source ~/.bash_profile
si vous le définissez ici).
Notez que dans ce cas, java
est sur le PATH
mais dans certains cas, vous devrez ajouter export PATH=$PATH:$JAVA_HOME/bin
pour ajouter le JAVA_HOME
variable au PATH
.
RHEL utilise un sous-système alternatif pour gérer les installations Java. Vous pouvez installer plusieurs versions de Java, mais une seule est active à la fois.
Cela signifie que l'exécution de which java
ne fournit pas d'informations utiles. Le résultat serait le même quelle que soit l'installation Java sélectionnée via les alternatives. Exécution de readlink -f $(which java)
(comme déjà suggéré dans un autre commentaire) ou en utilisant des alternatives de demande alternatives --display java
serait mieux.
Voir l'exemple de la machine RHEL 6 avec OpenJDK installé (qui est livré avec RHEL) :
[[email protected] ~]# which java
/usr/bin/java
[[email protected] ~]# readlink -f $(which java)
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64/jre/bin/java
[[email protected] ~]# alternatives --display java | head -2
java - status is manual.
link currently points to /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
Notez que la variable d'environnement JAVA_HOME
n'est défini nulle part par défaut, vous devrez le définir vous-même en .bashrc
d'utilisateur qui en a besoin.
Dans l'exemple précédent, corrigez la valeur de JAVA_HOME
serait /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64
.
Voir les détails dans la documentation d'installation d'OpenJDK, recherchez la section "Facultatif :définissez la variable d'environnement JAVA_HOME".