Pourquoi java -version renvoie-t-il une version différente de celle définie dans JAVA_HOME?

2

J'essaie de définir le JAVA_HOMEsystème d'exploitation Ubuntu. Je l' ai copié jdk 1.7dans /usr/lib/jvmet mis JAVA_HOMEen /etc/profilefichier.

Le contenu du /usr/lib/jvmdossier est le suivant:

shekhar@ubuntu:~$ ls /usr/lib/jvm/
default-java        java-1.6.0-openjdk       java-6-openjdk         java-6-openjdk-i386  jdk1.7.0_01
java-1.5.0-gcj-4.6  java-1.6.0-openjdk-i386  java-6-openjdk-common  java-7-openjdk-i386

et les dernières lignes du /etc/profilefichier sont les suivantes:

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_01
export PATH=$PATH:$JAVA_HOME/bin

Après avoir terminé tout cela lorsque j'exécute la java -versioncommande, la sortie suivante s'affiche:

shekhar@ubuntu:~$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDK Server VM (build 20.0-b12, mixed mode)

et quand je lance la ls -lahcommande, je reçois la sortie suivante:

shekhar@ubuntu:~$ ls -lah /usr/bin/java
lrwxrwxrwx 1 root root 22 Sep 29 09:58 /usr/bin/java -> /etc/alternatives/java
shekhar@ubuntu:~$ ls -lah /etc/alternatives/java
lrwxrwxrwx 1 root root 45 Sep 29 09:58 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java

Quelqu'un peut-il me dire quelle est la chose qui me manque? Pourquoi Ubuntu pointe-t-il toujours pour ouvrir jdk et non pour mon jdk 7?

PS: J'ai vu cette question similaire et ses réponses, mais cette question est liée au système d'exploitation Windows et non pas à Ubuntu, alors je republie cette question similaire pour Ubuntu.

Shekhar
la source

Réponses:

3

Vous définissez la variable d’environnement JAVA_HOME, puis vous l’utilisez pour définir votre PATH. Cependant, le chemin que vous définissez est également constitué du chemin existant. Essentiellement, vous venez d’ajouter quelque chose à votre chemin existant.

Le chemin d'accès à votre JDK1.7 est ajouté à la fin du chemin. Lorsque vous tapez "java --version" sur la ligne de commande, le système parcourt le chemin du début à la fin jusqu'à ce qu'il trouve un chemin contenant la commande "java". Par conséquent, ce que vous voyez est la sortie de la version de l’une de vos autres versions de Java.

Ce que je fais généralement sur Ubuntu est de regarder mon chemin:

echo $PATH

puis recherchez les chemins JVM possibles vers le début. À ce stade, vous disposez de plusieurs options pour résoudre ce problème:

  1. Créez un lien symbolique pointant le système vers votre nouveau chemin Java.

  2. Supprimez l'ancienne version Java et supprimez-la de votre chemin.

Je choisirais l'option 2. C'est moins déroutant de se débarrasser de ce dont on n'a pas besoin.

jmort253
la source
1
Salut tu avais raison D'une manière ou d'une autre, il y a un autre jdk ouvert installé qui arrivait avant mon jdk 1.7. Je viens de réorganiser la variable PATH de manière à amener mon jdk d’abord dans PATH. Maintenant cela fonctionne bien. Merci ...
Shekhar
2

Personnellement, je rencontrais exactement le même genre de problème sur une nouvelle installation d’Ubuntu 12.04. Tout ce que je devais faire était de désinstaller un paquet spécifique en utilisant la commande suivante:

sudo apt-get remove openjdk-6-jre-headless

Cela supprimait le lien dans / etc / alternatives et le mettait à jour avec le java 1.7 installé.

Je voulais juste partager car cela complète le point 2 de la réponse de jmort253.

Chris
la source
1

J'ai eu le même problème, et la réponse est cachée dans le PATH:

l'exécution de "$ env | grep java" montre:

PATH=/u01/app/oracle/product/11.2.0/xe/bin:/home/rivaldo/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/java/jdk1.6.0_14/bin:/home/rivaldo/bin/eclipse.JEE.Kepler.64
JAVA_HOME=/usr/local/java/jdk1.6.0_14
JDK_HOME=/usr/local/java/jdk1.6.0_14

mais en cours d'exécution "java -version" montrent toujours:

java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)

J'ai compris que mon PATH avait "/ usr / bin" avant "/java/jdk1.6.0_14/bin" et que je faisais "ll / usr / bin | grep java":

lrwxrwxrwx 1 root root 39 Jul 31 08:29 /etc/alternatives/java -> /usr/lib/jvm/java-7-oracle/jre/bin/java*

J'ai changé le lien symbolique en lien correct et le problème a été résolu. Vous pouvez aussi changer l'ordre au chemin:

de

export PATH=$PATH:$JAVA_HOME/bin

à

export PATH=$JAVA_HOME/bin:$PATH
Ricardo Rivaldo
la source