$ sudo apt search openjdk-.*-jdk$
openjdk-8-jdk/xenial-updates,xenial-security 8u252-b09-1~16.04 amd64
OpenJDK Development Kit (JDK)
openjdk-9-jdk/xenial 9~b114-0ubuntu1 amd64
OpenJDK Development Kit (JDK)
$ sudo apt install openjdk-8-jdk
$ sudo apt install openjdk-9-jdk
$ java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1~16.04-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
--java unter / usr / bin ist ein symbolischer Link und verweist auf Java unter / etc / alternatives. --java unter / etc / alternatives ist ebenfalls ein symbolischer Link und zeigt im folgenden Beispiel auf Java in / usr / lib / jvm / java-8-openjdk-amd64 / jre / bin. --update-alternatives kann auf verschiedene Versionen von Java verweisen, indem die symbolischen Links unter / etc / alternatives neu geschrieben werden. (Update-Alternativen können zusätzlich zu Java verwendet werden)
$ which java
/usr/bin/java
$ ls -la /usr/bin/java
lrwxrwxrwx 1 root root 22 May 5 01:46 /usr/bin/java -> /etc/alternatives/java
$ ls -la /etc/alternatives/java
lrwxrwxrwx 1 root root 46 May 5 07:52 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
Ich werde drei Methoden auflisten, die ich ausprobiert habe, aber ich persönlich empfehle Methode 3.
--Das installierte Java wird mit dem Befehl update-alternatives angezeigt. Geben Sie daher die zu wechselnde Auswahlnummer an.
$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 10 auto mode
* 1 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 10 manual mode
2 /usr/lib/jvm/java-9-openjdk-amd64/bin/java 10 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
$ sudo update-alternatives --config java
There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
Nothing to configure.
--Nachdem Sie den folgenden Registrierungsbefehl ausgeführt haben, wechseln Sie erneut. (Die letzte Nummer hat Priorität.)
sudo update-alternatives --verbose --install /usr/bin/java java /usr/lib/jvm/java-9-openjdk-amd64/jre/bin/java 10
$ java -version
openjdk version "9-internal"
OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src)
OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode)
――Aber wenn Sie sich den symbolischen Link in / etc / alternatives ansehen, können Sie sehen, dass nur der Java-Befehl umgeschaltet wird. .. .. Da Update-Alternativen kein Nur-Java-Befehl ist, ist dies natürlich. (Tatsächlich gibt es in / etc / alternatives viel mehr Java-bezogene Befehle.)
$ ls -ltr /etc/alternatives/java*
lrwxrwxrwx 1 root root 45 May 5 08:03 /etc/alternatives/javadoc -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc
lrwxrwxrwx 1 root root 43 May 5 08:03 /etc/alternatives/javah -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javah
lrwxrwxrwx 1 root root 43 May 5 08:03 /etc/alternatives/javac -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
lrwxrwxrwx 1 root root 43 May 5 08:03 /etc/alternatives/javap -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javap
lrwxrwxrwx 1 root root 42 May 5 08:04 /etc/alternatives/java -> /usr/lib/jvm/java-9-openjdk-amd64/bin/java
--Verwenden Sie update-java-alternatives, einen Schaltbefehl für Java.
$ cd /usr/lib/jvm
$ cat .java-1.9.0-openjdk-amd64.jinfo | grep -v -e '=' -e '^$' | awk '{system("sudo update-alternatives --verbose --install /usr/bin/" $2 " "$2 " " $3 " " 10)}'
--Versuchen Sie, Java anzuzeigen, das umgeschaltet werden kann.
$ update-java-alternatives --list
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
java-1.9.0-openjdk-amd64 1091 /usr/lib/jvm/java-1.9.0-openjdk-amd64
$ sudo update-java-alternatives --set java-1.9.0-openjdk-amd64
――Im Ende wechseln selbst Update-Java-Alternativen nicht alles. .. ..
$ ls -ltr /etc/alternatives/java*
lrwxrwxrwx 1 root root 45 May 5 08:03 /etc/alternatives/javadoc -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc
lrwxrwxrwx 1 root root 43 May 5 08:03 /etc/alternatives/javah -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javah
lrwxrwxrwx 1 root root 43 May 5 08:03 /etc/alternatives/javac -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
lrwxrwxrwx 1 root root 43 May 5 08:03 /etc/alternatives/javap -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javap
lrwxrwxrwx 1 root root 42 May 5 08:24 /etc/alternatives/java -> /usr/lib/jvm/java-9-openjdk-amd64/bin/java
―― Gibt es am Ende keine andere Wahl, als alle Java-bezogenen Befehle mithilfe von Update-Alternativen zu wechseln? .. ..
$ cd /usr/lib/jvm
$ cat .java-1.9.0-openjdk-amd64.jinfo | grep -v -e '=' -e '^$' | awk '{system("sudo update-alternatives --verbose --install /usr/bin/" $2 " "$2 " " $3 " " 10)}'
--update-Switch Java-bezogene Befehle in Alternativen mit einem Liner
$ cat .java-1.9.0-openjdk-amd64.jinfo | grep -v -e '=' -e '^$' | awk '{system("sudo update-alternatives --set " $2 " " $3 )}'
$ ls -ltr /etc/alternatives/java*
lrwxrwxrwx 1 root root 42 May 5 08:24 /etc/alternatives/java -> /usr/lib/jvm/java-9-openjdk-amd64/bin/java
lrwxrwxrwx 1 root root 43 May 5 08:42 /etc/alternatives/javac -> /usr/lib/jvm/java-9-openjdk-amd64/bin/javac
lrwxrwxrwx 1 root root 43 May 5 08:42 /etc/alternatives/javah -> /usr/lib/jvm/java-9-openjdk-amd64/bin/javah
lrwxrwxrwx 1 root root 45 May 5 08:42 /etc/alternatives/javadoc -> /usr/lib/jvm/java-9-openjdk-amd64/bin/javadoc
lrwxrwxrwx 1 root root 43 May 5 08:42 /etc/alternatives/javap -> /usr/lib/jvm/java-9-openjdk-amd64/bin/javap
―― Keine der oben genannten Methoden wechselt JAVA_HOME, daher müssen Sie einzeln wechseln.
Recommended Posts