Quelle est la valeur de JAVA_HOME pour CentOS?

37

J'ai installé java via yum sur CentOS, mais un autre programme java a besoin de savoir quelle est la variable environnementale JAVA_HOME. Je sais tout sur la définition des variables environnementales, mais à quoi dois-je le définir? javaest installé dans /usr/bin/java, il ne peut pas être là!

Rory
la source

Réponses:

54

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 le faisant update-alternatives --display javaet il m'a montré le répertoire/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java

Rory
la source
20

Je ne suis pas tout à fait sûr, mais si vous installez le RPMS normal, la valeur de JAVA_HOME peut également être définie sur ceci:

/usr/java/default/

EDIT: Je viens de vérifier sur mon système à la maison. 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 le JDK Java à partir d'Oracle

Faites-le primaire

Assurez-vous que ce Java est utilisé à la place de la version OpenJDK à l'aide des 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 la variable d'environnement JAVA_HOME de tous les utilisateurs est définie sur la valeur correcte:

echo "export JAVA_HOME=/usr/java/default/" > /etc/profile.d/java_home.sh
Niels Basjes
la source
Oh intéressant. :)
Rory
1
Il n'y a pas /usr/java/defaultde logiciel CentOS 6 avec OpenJDK 1.6 et 1.7 installé.
Daniel Serodio
@DanielSerodio Correct. J'ai clairement décrit "Télécharger et installer le JDK Java à partir d'Oracle", puis il existe.
Niels Basjes
2

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 kit de développement (JDK) est installé, vous souhaitez probablement qu'il pointe sur ce point, sinon utilisez le chemin JRE (Java Runtime Environment). Ensuite, vous voudrez 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 éditer 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 ~ / .profile ou ~ / .bash_profile des utilisateurs.

Kyle Brandt
la source
Je me demande s’il ya une bonne raison que l’installation ne le fasse pas pour vous si vous utilisez le super utilisateur, je trouve toujours cela irritant ...
Kyle Brandt
2

Ci-dessous fonctionne toujours pour moi parfaitement:

[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

prashant
la source
1

J'ai examiné le problème de si on change la version de java utilisée avec:

alternatives --config java

Ensuite, tout codé en dur JAVA_HOMEva changer (du moins ce sera le cas sur le Centos 6.6 que je suis en train de regarder). C'est, il n'y a pas /usr/java.

Cela ne semble pas être le meilleur moyen (ouvert à l'échec), mais dans les 10 minutes que j'ai passées à ce sujet, il semble le meilleur.

Dans /etc/bashrcj'ai modifié le paramètre JAVA_HOMEpour ê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 tout grepet sedanalyser le résultat. alternativesOffre sûrement une solution similaire plus facile.

Quoi qu'il en soit, j'espère avoir aidé.


Mise à jour

Non ce serait JRE_HOME. Le JDK / SDK n'est pas une évidence (je vais continuer à chercher).

Il alternativessemble ne s'agir que du JRE par défaut. Je reporte à @Niels répondre ou installe simplement Java avec yumet règle le JAVA_HOME à cela (l'astuce est l'endroit où j'ai trouvé où il a été installé!).

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

J'ai remarqué qu'il java_1.8.0s'agit d'un lien symbolique vers /etc/alternatives/java_sdk_1.8.0et donc de définir mon $ JAVA_HOME sur /usr/lib/jvm/java_1.8.0. Dans le /etc/bashrc.

HankCa
la source
0

C’est bizarre, l’intérêt d’avoir une variable d’environnement JAVE_HOME est que vous n’aurez pas à spécifier le chemin de chaque programme, il peut obtenir ce chemin en cherchant cette variable.

Quoi qu'il en soit, la méthode correcte pour trouver la variable d'environnement pour JAVA_HOME consiste à 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 utilisez, à partir de la ligne de commande.

Dave Drager
la source
2
La variable n'avait pas été définie.
Rory
0

re: Centos7, reportez-vous au fichier /etc/java/java.conf.

JAVA_HOME y est indiqué comme étant situé dans le répertoire suivant: / usr / lib / jvm / java

j'ai vérifié, c'est la version correcte du jdk j'ai chargé via yum, et ainsi ...

JAVA_HOME n’est pas défini par défaut dans mon env. Je l’ai donc défini dans .bash_profile

theRiley
la source
0

J'ai trouvé le gestionnaire de paquets peut placer dans divers endroits, donc l' utilisation qui (vous devez installer explicitement si vous utilisez un récipient) 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
Jules Clements
la source