J'ai installé Java via yum sur CentOS, cependant un autre programme Java doit savoir quelle est la variable d'environnement Java_HOME. Je sais tout sur la définition des variables d'environnement, mais à quoi dois-je le définir? Java
est installé dans /usr/bin/Java
, ça ne peut pas être là!
En fait, je l'ai trouvé,
c'est /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/
. J'ai découvert ce que c'était en faisant update-alternatives --display Java
et il m'a montré le répertoire /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/Java
Je ne suis pas sûr mais si vous installez le RPMS normal, la valeur Java_HOME peut également être définie sur ceci:
/usr/Java/default/
EDIT: Je viens de vérifier sur mon système domestique. J'ai créé ce fichier:
/etc/profile.d/Java.sh
Cela contient:
export Java_HOME=/usr/Java/default/
et j'utilise la version officielle de Sun: jdk-1.6.0_12-fcs
EDIT: Voici comment j'ai configuré Java sur ma machine :
Téléchargez et installez Java JDK d'Oracle
Assurez-vous que Java est utilisé à la place de la version OpenJDK en utilisant les deux commandes suivantes:
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
Assurez-vous que tous les utilisateurs ont leur variable d'environnement Java_HOME définie sur la valeur correcte:
echo "export Java_HOME=/usr/Java/default/" > /etc/profile.d/Java_home.sh
Ci-dessous fonctionne toujours parfaitement pour moi:
[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
Cela signifie que je peux définir Java_HOME comme /usr/Java/jdk1.6.0_31
Vous souhaitez définir Java_HOME comme emplacement racine du JDK ou du JRE, par exemple:
export Java_HOME=/usr/Java/jdk1.3
Si le JDK (Kit de développement) est installé, ypu voudra probablement qu'il pointe vers cela, sinon utilisez le chemin JRE (Java Runtime Environment). Ensuite, vous souhaiterez peut-être définir votre variable d'environnement $ PATH pour inclure également le répertoire bin:
export PATH=$PATH:/usr/Java/jdk1.3/bin
Si vous utilisez Tomcat, vous devrez peut-être également définir CATALINA_HOME pour l'utilisateur Tomcat.
export CATALINA_HOME=/path/to/Tomcat
Pour définir cela pour le système, vous souhaitez modifier votre/etc/profile ou ajouter un fichier .sh dans le dossier /etc/profile.d. Pour un utilisateur particulier, vous pouvez le placer dans les fichiers utilisateurs ~/.profile ou ~/.bash_profile.
J'ai considéré le problème de si l'on change la version de Java utilisé avec:
alternatives --config Java
Ensuite, tout codé en dur Java_HOME
va changer (au moins ce sera sur le Centos 6.6 que je regarde actuellement). Autrement dit, il n'y a pas de /usr/Java
.
Cela ne semble pas être le meilleur moyen (ouvert à l'échec), mais dans les 10 minutes que j'ai passées, cela semble le meilleur.
Dans /etc/bashrc
J'ai modifié le paramètre sur Java_HOME
être:
export Java_HOME=$(alternatives --display Java | grep current | sed 's/link currently points to //' | sed 's|/bin/Java||')
Vous devez faire quelque chose de similaire sur MacOSX mais sans tous les grep
et sed
pour analyser le résultat. alternatives
offre sûrement une solution tout aussi simple.
Quoi qu'il en soit, j'espère avoir aidé.
Mise à jour
Non, ce serait JRE_HOME
. Le JDK/SDK n'est pas aussi évident (je continuerai à chercher).
Le alternatives
ne semble concerner que le JRE par défaut. Je m'en remets à la réponse @Niels ou j'installe simplement Java avec yum
et je définis Java_HOME sur cela (l'astuce est où j'ai trouvé où cela a été installé!).
yum install Java-1.8.0-openjdk-devel.x86_64
cd /usr/lib/jvm
J'ai remarqué Java_1.8.0
est un lien symbolique vers /etc/alternatives/Java_sdk_1.8.0
et ainsi définir mon $ Java_HOME sur /usr/lib/jvm/Java_1.8.0
. Dans le /etc/bashrc
.
re: Centos7, reportez-vous au fichier /etc/Java/java.conf.
il est indiqué que Java_HOME se trouve dans le répertoire suivant:/usr/lib/jvm/Java
j'ai vérifié, c'est la bonne version du jdk que j'ai chargé via yum, et donc ...
mon env n'a pas Java_HOME défini par défaut, donc je le place dans .bash_profile
J'ai trouvé que le gestionnaire de paquets peut être placé dans une variété d'emplacements, donc en utilisant qui (vous devrez l'installer explicitement si vous utilisez un conteneur), ce qui suit est un peu moins fragile
javaCompiler=$(which javac)
javaBin=$(dirname $(readlink -f $javaCompiler))
javaHome=${javaBin%/*}
export Java_HOME=$javaHome
ou pour JRE
javaExec=$(which Java)
javaBin=$(dirname $(readlink -f $javaExec))
javaHome=${javaBin%/*}
export JRE_HOME=$javaHome
C'est bizarre, l'intérêt d'avoir une variable d'environnement JAVE_HOME est que vous n'avez pas besoin de spécifier le chemin d'accès à chaque programme, il peut obtenir ce chemin en recherchant cette variable.
Dans les deux cas, la bonne façon de trouver la variable d'environnement pour Java_HOME est d'utiliser echo:
[root@Host ~]# echo $Java_HOME
/usr/Java/j2sdk1.4.2_09
L'exécution de cette commande affichera le chemin, quelle que soit la version que vous exécutez, à partir de la ligne de commande.