Ich versuche, JAVA_HOME
das Ubuntu-Betriebssystem einzurichten. Ich habe es kopiert jdk 1.7
und /usr/lib/jvm
in JAVA_HOME
der /etc/profile
Datei eingerichtet.
Der Inhalt des /usr/lib/jvm
Ordners ist 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 Zeilen der /etc/profile
Datei lauten wie folgt:
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_01
export PATH=$PATH:$JAVA_HOME/bin
Wenn ich nach Abschluss all dessen den Befehl ausführe, java -version
erhalte ich die 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 -lah
den Befehl ausführe, 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 bitte jemand sagen, was ich übersehe? Warum verweist Ubuntu immer noch auf Open JDK und nicht auf mein JDK 7?
PS: Ich habe gesehendieses ähnlicheFrage und ihre Antworten, aber diese Frage bezieht sich auf das Windows-Betriebssystem und nicht auf Ubuntu, deshalb poste ich diese ähnliche Frage für Ubuntu erneut.
Antwort1
Sie haben die Umgebungsvariable JAVA_HOME festgelegt und diese dann verwendet, um Ihren PATH festzulegen. Der von Ihnen festgelegte Pfad besteht jedoch auch aus dem vorhandenen Pfad. Im Wesentlichen haben Sie Ihrem vorhandenen Pfad einfach etwas anderes hinzugefügt.
Der Pfad zu Ihrem JDK1.7 wird am Ende des Pfads hinzugefügt. Wenn Sie „java --version“ in die Befehlszeile eingeben, durchsucht das System den Pfad von Anfang bis Ende, bis es einen Pfad findet, der den Befehl „java“ enthält. Was Sie also sehen, ist die Versionsausgabe einer Ihrer anderen Java-Versionen.
Normalerweise schaue ich mir unter Ubuntu meinen Pfad an:
echo $PATH
und suchen Sie dann am Anfang nach möglichen JVM-Pfaden. An diesem Punkt haben Sie mehrere Möglichkeiten, das Problem zu beheben:
Erstellen Sie einen symbolischen Link, der das System auf Ihren neuen Java-Pfad verweist.
Entfernen Sie die alte Java-Version und entfernen Sie sie aus Ihrem Pfad.
Ich würde Option 2 wählen. Es ist weniger verwirrend, einfach das loszuwerden, was man nicht braucht.
Antwort2
Ich hatte das gleiche Problem und die Antwort ist im PFAD versteckt:
Das Ausführen von „$ env | grep java“ zeigt:
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
aber beim Ausführen von „java -version“ wird immer noch Folgendes angezeigt:
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 in meinem PATH „/usr/bin“ vor „/java/jdk1.6.0_14/bin“ steht und mit „ll /usr/bin | grep java“ erhalte ich Folgendes:
lrwxrwxrwx 1 root root 39 Jul 31 08:29 /etc/alternatives/java -> /usr/lib/jvm/java-7-oracle/jre/bin/java*
Ich habe den symbolischen Link durch den richtigen ersetzt und das Problem war gelöst. Sie können auch die Reihenfolge im Pfad ändern:
aus
export PATH=$PATH:$JAVA_HOME/bin
Zu
export PATH=$JAVA_HOME/bin:$PATH
Antwort3
Ich persönlich hatte bei einer Neuinstallation von Ubuntu 12.04 genau das gleiche Problem. Ich musste lediglich ein bestimmtes Paket mit dem folgenden Befehl deinstallieren:
sudo apt-get remove openjdk-6-jre-headless
Dadurch wurde der Link in der Datei /etc/alternatives entfernt und auf die installierte Java-Version 1.7 aktualisiert.
Ich wollte das nur mitteilen, da dies Punkt 2 in der Antwort von jmort253 vervollständigt.