Wechseln Sie zwischen mehreren Java-Versionen


65

Während der Installation von Android Studio unter Ubuntu 14.04 erhalte ich die Meldung, dass meine Java-Version ( javac 1.7.0_79) Probleme verursacht. Ich habe eine Lösung gefunden, wie man eine neuere Oracle-Version von Java installiert:

sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

Ich befürchte jedoch, dass dies meine vorhandene open-jdkJava-Version überschreibt . Da ich nicht weiß, welches meiner Programme von Java abhängt, befürchte ich, dass dies diese anderen Programme zum Absturz bringen könnte.

Gibt es eine Möglichkeit, um sicherzustellen, dass apt-getmein vorheriges Java nicht überschrieben wird? Grundsätzlich möchte ich beide installiert haben und in der Lage sein, manuell zwischen ihnen zu wechseln, je nachdem, welche Version ich benötige.

Antworten:


83

Apt-get überschreibt die vorhandenen Java-Versionen nicht.

Verwenden Sie den update-java-alternativesBefehl, um zwischen installierten Java-Versionen zu wechseln .

Alle Java-Versionen auflisten:

update-java-alternatives --list

Java-Version als Standard festlegen (Root-Berechtigungen erforderlich):

sudo update-java-alternatives --set /path/to/java/version

... wo /path/to/java/versionist einer der im vorherigen Befehl aufgelisteten (zB /usr/lib/jvm/java-7-openjdk-amd64).


Zusätzliche Information:

update-java-alternativesist ein Convenience - Tool , das von Debian verwendet Alternatives System ( update-alternativeseine Reihe von Links zu der angegebenen Java - Version (zB eingestellt) java, javac, ...).


1
Für mich führte dies dazu, dass die Java-Version java8 war, aber JAVA_HOME war immer noch auf 7 :(
Nenotlep

Dies löst auch mein Problem. @Nenotlep Ich habe die Umgebungsvariable manuell entweder in .bashrc oder / etc / environment
nuttynibbles bearbeitet.

update-java-alternativeswar nicht für mich verfügbar. Ich habe diesen Befehl durch ersetzt update-alternatives java.
Nofinator

@nofinator, der nur die javaausführbare Datei betrifft . Welche Ubuntu-Version benutzt du?
Tanzel

1
@Nenotlep, um zu ändern JAVA_HOME, müssen Sie den folgenden Befehl source /etc/environment
ausführen

48

Verwenden

sudo update-alternatives --config java

Hier werden alle installierten Versionen aufgelistet, bei denen die derzeit aktive markiert ist, und es wird ein Dialog zum Wechseln angezeigt:

There are 3 choices for the alternative java (providing /usr/bin/java).

Selection    Path...
------------------------------------------------------------
  0            /usr/lib/jvm/java-9-oracle/bin/java...
* 1            /usr/lib/jvm/java-7-oracle/jre/bin/java...
  2            /usr/lib/jvm/java-8-oracle/jre/bin/java...
  3            /usr/lib/jvm/java-9-oracle/bin/java...

Press <enter> to keep...[*], or type selection number: 

Verwenden

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

um die $JAVA_HOMEaktuell aktive Version einzustellen


Wie @danzel bei der akzeptierten Antwort feststellt, betrifft dies nur die javaausführbare Datei, nicht die anderen Teile der Konfiguration. Verwenden Sie, update-java-alternativesfalls verfügbar.
Premek Brada

4

Basierend auf der Antwort von @muet fand ich, dass dies nahtlos funktioniert:

Fügen Sie dies hinzu zu ~/.bashrc:

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

Alias ​​hinzufügen:

alias useJava8='yes | sudo apt-get install oracle-java8-set-default && source ~/.bashrc'
alias useJava7='yes | sudo apt-get install oracle-java7-set-default && source ~/.bashrc'

Dann können Sie innerhalb derselben Shell nur mit: useJava7oder wechselnuseJava8


um Aliase dauerhaft zu machen, kann man sie in ~ / .bashrc setzen, mehr Infos hier askubuntu.com/questions/17536/…
Konstantin Zyubin

E: Paket oracle-java7-set-default kann nicht gefunden werden
Prakash Pandey

Die eindeutig einfachste Möglichkeit zum Installieren, Verwenden und Wechseln zwischen verschiedenen Java-Versionen ist die Verwendung von SDKMAN! Siehe hier: sdkman.io/usage.html
brianjohnsen

vor kurzem auf einen anderen Befehl gestoßen, um das JAVA_HOME zu setzen, aber noch .bashrcexport JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
anzuprobieren

3

Java konfigurieren

Sie können konfigurieren, welche Version standardmäßig in der Befehlszeile verwendet wird, indem Sie festlegen update-alternatives, welche symbolischen Links für verschiedene Befehle verwendet werden.

sudo update-alternatives --config java

Die Ausgabe sieht ungefähr so ​​aus.

There are 5 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      auto mode
  1            /usr/lib/jvm/java-6-oracle/jre/bin/java          1         manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          2         manual mode
  3            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
  4            /usr/lib/jvm/java-8-oracle/jre/bin/java          3         manual mode
  5            /usr/lib/jvm/java-9-oracle/bin/java              4         manual mode

Press <enter> to keep the current choice[*], or type selection number:

Sie können nun die Nummer auswählen, die als Standard verwendet werden soll. Dies kann auch für andere Java-Befehle wie Compiler ( javac), Dokumentationsgenerator ( javadoc), JAR-Signiertool ( jarsigner) usw. erfolgen. Sie können den folgenden Befehl verwenden, in dem Füllen Befehl Sie anpassen möchten.

sudo update-alternatives --config command

Einstellen des JAVA_HOMEUmgebungsvariable

Viele Programme, z. B. Java-Server, verwenden die Umgebungsvariable JAVA_HOME, um den Java-Installationsort zu bestimmen.

Kopieren Sie den Pfad von Ihrer bevorzugten Installation und öffnen Sie dann / etc / environment mit Sublime Text oder Ihrem bevorzugten Texteditor.

sudo subl /etc/environment

Fügen Sie am Ende dieser Datei die folgende Zeile hinzu und achten Sie darauf, den markierten Pfad durch Ihren eigenen kopierten Pfad zu ersetzen.

JAVA_HOME="/usr/lib/jvm/java-8-oracle"

Speichern und schließen Sie die Datei und laden Sie diese: source /etc/environment.
Sie können nun testen , ob die Umgebungsvariable durch Ausführen des folgenden Befehls festgelegt: echo $JAVA_HOME. Dies gibt den Pfad zurück, den Sie gerade eingestellt haben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.