web-dev-qa-db-fra.com

Quelle est la valeur de Java_HOME pour CentOS?

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à!

37
Rory

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

54
Rory

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 :

Installer Java

Téléchargez et installez Java JDK d'Oracle

Rendez-le primaire

Assurez-vous que Java est utilisé à la place de la version OpenJDK en utilisant les deux commandes suivantes:

Première

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

Seconde

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

Définir Java_HOME

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
20
Niels Basjes

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

2
prashant

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.

2
Kyle Brandt

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.

1
HankCa

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

0
theRiley

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
0
Jules Clements

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.

0
Dave Drager