Warum gibt Java-Version eine andere Version als die in JAVA_HOME definierte zurück?

5983
Shekhar

Ich versuche, JAVA_HOMEUbuntu OS einzustellen . Ich habe kopiert jdk 1.7in /usr/lib/jvmund setzen JAVA_HOMEin /etc/profileDatei.

Der Inhalt des /usr/lib/jvmOrdners lautet wie folgt:

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 

und die letzten paar Zeilen der /etc/profileDatei lauten wie folgt:

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

Wenn ich all diesen java -versionBefehl ausgeführt habe, erhalte ich folgende Ausgabe:

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) 

und wenn ich ls -lahBefehl ausführen, erhalte ich folgende Ausgabe:

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 

Kann mir jemand bitte sagen, was mir fehlt? Warum zeigt Ubuntu immer noch auf jdk und nicht auf mein jdk 7?

PS: Ich habe diese ähnliche Frage und ihre Antworten gesehen, aber diese Frage bezieht sich auf das Windows-Betriebssystem und nicht auf Ubuntu. Daher werde ich diese ähnliche Frage für Ubuntu erneut veröffentlichen.

2

3 Antworten auf die Frage

3
jmort253

Sie legen die Umgebungsvariable JAVA_HOME fest und haben diese dann zum Festlegen Ihres PFADs verwendet. Der von Ihnen eingestellte Pfad besteht jedoch auch aus dem vorhandenen Pfad. Im Wesentlichen haben Sie Ihrem bestehenden Pfad nur etwas hinzugefügt.

Der Pfad zu Ihrer JDK1.7 wird am Ende des Pfads hinzugefügt. Wenn Sie in die Befehlszeile "java --version" eingeben, durchsucht das System den Pfad von Anfang bis Ende, bis ein Pfad gefunden wird, der den Befehl "java" enthält. Daher sehen Sie die Versionsausgabe einer Ihrer anderen Java-Versionen.

Was ich normalerweise auf Ubuntu mache, ist mein Pfad:

echo $PATH 

Suchen Sie dann nach möglichen JVM-Pfaden am Anfang. An diesem Punkt hätten Sie mehrere Möglichkeiten, dies zu beheben:

  1. Erstellen Sie einen Symlink, der das System auf Ihren neuen Java-Pfad verweist.

  2. Entfernen Sie die alte Java-Version und entfernen Sie sie aus Ihrem Pfad.

Ich würde mich für Option 2 entscheiden. Es ist weniger verwirrend, nur das loszuwerden, was Sie nicht brauchen.

Hi, du hattest recht. Irgendwie gibt es noch andere offene JDKs, die vor meiner JDK 1.7 kamen. Ich habe gerade die PATH-Variable neu geordnet, um meine Jdk zuerst in PATH zu bringen. Jetzt funktioniert es gut. Vielen Dank... Shekhar vor 11 Jahren 1
2
Chris

I personally was facing exactly the same kind of problem on a fresh Ubuntu 12.04 install. All I had to do is to uninstall a specific package using the following command:

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

This removed the link in the /etc/alternatives and updated it to the installed java 1.7

Just wanted to share as this completes point 2 in jmort253's answer.

1
Ricardo Rivaldo

Ich hatte das gleiche Problem und die Antwort ist im PFAD versteckt:

Wenn Sie "$ env | grep java" ausführen, wird Folgendes angezeigt:

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 

"java -version" läuft aber immer noch:

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) 

Ich habe herausgefunden, dass mein PATH "/ usr / bin" vor "/java/jdk1.6.0_14/bin" hat und "ll / usr / bin | grep java" gemacht habe:

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

Ich habe den simbolischen Link in den richtigen geändert und das Problem gelöst. Sie können die Reihenfolge auch unter path ändern:

von

export PATH=$PATH:$JAVA_HOME/bin 

zu

export PATH=$JAVA_HOME/bin:$PATH