Das Problem
Ein JDK/JRE von Oracle wurde gemäß den Installationsanweisungen auf einer Linux-Maschine installiert. Der Befehl „java“ führt die installierte JVM nicht aus. Java-Anwendungen können möglicherweise nicht ausgeführt werden, wenn eine unerwartete Java-Laufzeitumgebung gefunden wird.
Beispiel von einem Red Hat-Server:
$ java -version java version "1.6.0_17" OpenJDK Runtime Environment (IcedTea6 1.7.4) (rhel-1.21.b17.el6-x86_64) OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)
Haftungsausschluss :Die in diesem Artikel verwendeten Verzeichnisse und Pfade stellen fiktive Beispielnamen dar, die ein Beispiel darstellen. Jegliche Ähnlichkeit mit tatsächlichem Code ist rein zufällig und nicht anderweitig beabsichtigt.
Die Lösung
Ein neues JDK/JRE von Oracle wurde gemäß der Installationsanleitung installiert. Beispiel von einem Red Hat-Server:
# rpm -ivh jdk-7u6-linux-x64.rpm
Der Befehl „java“ ist normalerweise ein symbolischer Link in /usr/bin, der (direkt oder indirekt) auf die eigentliche ausführbare Java-Datei zeigt. Normalerweise ist /usr/bin einer der ersten Einträge in der Umgebungsvariable PATH und daher ist /usr/bin/java normalerweise derjenige, der zuerst gefunden wird, wenn Java gestartet wird.
Nehmen wir für die folgenden möglichen Lösungen an, dass Sie das JDK in /usr/java/jdk1.7.0_06/ installiert haben.
Lösung 1:PATH ändern
Ändern Sie die Umgebungsvariable PATH so, dass das neue Oracle JRE/JDK gefunden werden kann, bevor andere JREs gefunden werden können.
Zum Beispiel:
$ export PATH=/usr/java/jdk1.7.0_06/bin:$PATH
$ java -version java version "1.7.0_06" Java(TM) SE Runtime Environment (build 1.7.0_06-b24) Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode)
Lösung 2:Verwenden Sie einen absoluten Pfad
Verwenden Sie den vollständigen absoluten Pfad zum neu installierten Oracle JRE/JDK, um Java-Anwendungen auszuführen.
Zum Beispiel:
$ /usr/java/jdk1.7.0_06/bin/java -version java version "1.7.0_06" Java(TM) SE Runtime Environment (build 1.7.0_06-b24) Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode)
Lösung 3:Update-Alternativen verwenden
Verwenden Sie den Befehl namens update-alternatives um Linux mitzuteilen, wo das gerade installierte Oracle JRE/JDK zu finden ist.
Hinweis :Das manuelle Korrigieren von symbolischen Links wie /usr/bin/java oder /etc/alternatives/java kann dazu führen, dass der Befehl update-alternatives falsche Werte anzeigt oder sogar nicht gestartet werden kann. Daher wird empfohlen, den Befehl update-alternatives zu verwenden, um die gewünschten Symlinks zu installieren und zu konfigurieren, anstatt die Symlinks manuell zu ändern.Verwenden Sie „su“ auf RedHat, verwenden Sie „sudo“ auf Ubuntu:
$ su - # update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk1.7.0_06/bin/java" 1 # update-alternatives --config java There are 3 programs which provide 'java'. Selection Command ----------------------------------------------- 1 /usr/lib/jvm/jre-1.5.0-gcj/bin/java *+ 2 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java 3 /usr/java/jdk1.7.0_06/bin/java Enter to keep the current selection[+], or type selection number: 3 # exit
$ java -version java version "1.7.0_06" Java(TM) SE Runtime Environment (build 1.7.0_06-b24) Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode)
Weitere Informationen finden Sie auf der Manpage von update-alternatives.
$ man update-alternatives