Wie ändere ich den Wert von JAVA_HOME
in Ubuntu, um auf Oracle Java zu verweisen?
Sollte es auf java-6-sun
oder zeigen java-6-sun-1.6.0.24
?
Wie ändere ich den Wert von JAVA_HOME
in Ubuntu, um auf Oracle Java zu verweisen?
Sollte es auf java-6-sun
oder zeigen java-6-sun-1.6.0.24
?
Antworten:
Ich setze die Zeile:
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
in meiner ~/.bashrc
Akte.
/usr/lib/jvm/java7-oracle
sollte ein symbolischer Link sein, auf den verwiesen wird /usr/lib/jvm/java-7-oracle-[version number here]
.
Der Grund für die symbolische Verknüpfung ist, dass Sie Ihre JVM nicht aktualisieren müssen, falls es eine neue Version der JVM gibt .bashrc
Datei , sondern automatisch auf die neue Version verweisen sollte.
Wenn Sie JAVA_HOME
Umgebungsvariablen global und auf Systemebene festlegen möchten, sollte die Verwendung in der /etc/environment
Datei festgelegt werden.
oracle-java7-set-default
Paket bewirkt.
Wenn Sie es global und auf Systemebene ändern möchten;
Im
/etc/environment
füge diese Zeile hinzu:
JAVA_HOME=/usr/lib/jvm/java-7-oracle
$JAVA_HOME
löst sich nicht auf, wenn es so verwendet PATH=$JAVA_HOME/bin
wird. Neustart versucht, keine Auswirkung. Muss ich export
oder set
JAVA_HOME
entweder in dieser Datei oder in meinem Profil?
Um das Java SE Development Kit von Oracle als Standard-Java für das System festzulegen, laden Sie einfach das neueste Java SE Development Kit von hier herunter und erstellen Sie ein Verzeichnis an einer beliebigen Stelle in Ihrem Dateisystem. /usr/java
Extrahieren Sie nun beispielsweise die Dateien, die Sie gerade in dieses Verzeichnis heruntergeladen haben:
$ sudo tar xvzf jdk-8u5-linux-i586.tar.gz -C /usr/java
So legen Sie jetzt Ihre JAVA_HOME
Umgebungsvariable fest:
$ JAVA_HOME=/usr/java/jdk1.8.0_05/
$ sudo update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000
$ sudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000
Stellen Sie sicher, dass Java von Oracle als Standard-Java festgelegt ist durch:
$ update-alternatives --config java
Sie bekommen so etwas:
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /opt/java/jdk1.8.0_05/bin/java 20000 auto mode
1 /opt/java/jdk1.8.0_05/bin/java 20000 manual mode
2 /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java 1061 manual mode
Press enter to keep the current choice[*], or type selection number:
Achten Sie auf das Sternchen vor den Zahlen auf der linken Seite. Wenn die richtige nicht eingestellt ist, wählen Sie die richtige aus, indem Sie die Nummer eingeben und die Eingabetaste drücken. Testen Sie jetzt Ihr Java:
$ java -version
Wenn Sie Folgendes erhalten, können Sie loslegen:
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)
Beachten Sie auch, dass Sie möglicherweise eine Root-Berechtigung benötigen oder sich in einer Sudoers-Gruppe befinden, um dies tun zu können. Ich habe diese Lösung sowohl auf Ubuntu 12.04 als auch auf Debian Wheezy getestet und sie funktioniert in beiden.
Wenn Sie möchten, dass diese Umgebungsvariable allen Benutzern und beim Systemstart zur Verfügung steht , können Sie /etc/profile.d/java.sh Folgendes hinzufügen ( ggf. erstellen):
export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
Dann in einem Terminal laufen:
sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh
Meine zweite Frage ist - sollte sie auf Java-6-Sonne oder Java-6-Sonne-1.6.0.24 verweisen?
Es sollte immer darauf verweisen, java-7-oracle
dass Symlinks zu dem zuletzt installierten (vorausgesetzt, Sie haben Java aus den Ubuntu-Repositorys und jetzt aus dem auf oracle.com verfügbaren Download installiert).
Java 6
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64
oder Java 7
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
Wenn Sie irgendeine Art von Entwicklung durchführen, müssen Sie auf das JDK (Java Development Kit) verweisen. Andernfalls können Sie auf die JRE (Java Runtime Environment) verweisen.
Das JDK enthält alles, was die JRE hat und mehr. Wenn Sie nur Java-Programme ausführen, können Sie entweder auf die JRE oder das JDK verweisen.
Sie sollten JAVA_HOME
basierend auf dem aktuellen Java, das Sie verwenden, festlegen .
readlink
druckt den Wert eines symbolischen Links für das aktuelle Java und sed
passt ihn an das JRE-Verzeichnis an:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
Wenn Sie JAVA_HOME für JDK einrichten möchten, sollten Sie einen Ordner mehr aufrufen:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")
Wenn Sie bei der Installation mehrerer JDKs eine bestimmte Java-Version verwenden möchten, funktioniert das Festlegen von JAVA_HOME möglicherweise nicht.
Sie müssen verwenden sudo update-alternatives --config java
, um Standard-Java festzulegen.
Sehen Sie das ; Lauf
sudo update-java-alternatives --list
um alle Java-Installationen auf einem Computer nach Name und Verzeichnis aufzulisten und dann auszuführen
sudo update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]
um zu wählen, welches JRE / JDK verwendet werden soll.
Wenn Sie für jede Java-Aufgabe unterschiedliche JDKs / JREs verwenden möchten, können Sie Update-Alternativen ausführen, um jeweils eine ausführbare Java-Datei zu konfigurieren. Du kannst rennen
sudo update-alternatives --config java[Tab]
um die Java-Befehle anzuzeigen, die konfiguriert werden können (Java, Javac, Javah, Javaws usw.). Und dann
sudo update-alternatives --config [javac|java|javadoc|etc.]
ordnet diese Java-Aufgabe / diesen Java-Befehl einem bestimmten JDK / JRE zu.
Möglicherweise müssen Sie für einige Anwendungen auch JAVA_HOME festlegen: Aus dieser Antwort können Sie verwenden
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
für JREs oder
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")
für JDKs.
java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment