$ 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 sous / usr / bin est un lien symbolique et pointe vers java sous / etc / alternatives. --java sous / etc / alternatives est également un lien symbolique, et dans l'exemple ci-dessous, il pointe vers java dans / usr / lib / jvm / java-8-openjdk-amd64 / jre / bin. --update-alternatives peut pointer vers différentes versions de java en réécrivant les liens symboliques sous / etc / alternatives. (Les alternatives de mise à jour peuvent être utilisées en plus de java)
$ 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
Je vais énumérer trois méthodes que j'ai essayées, mais je recommande personnellement la méthode 3.
--Le Java installé est affiché par la commande update-alternatives, spécifiez donc le numéro de sélection à changer.
$ 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
--Si vous obtenez le message suivant, update-alternatives ne reconnaît que java8, vous devez donc enregistrer java9.
$ 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.
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)
――Mais si vous regardez le lien symbolique dans / etc / alternatives, vous pouvez voir que seule la commande java est commutée. .. .. Puisque update-alternatives n'est pas une commande uniquement Java, c'est naturel. (En fait, il y a beaucoup plus de commandes liées à Java dans / etc / alternatives.)
$ 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
--Utilisez update-java-alternatives, une commande de commutation dédiée à java. Cependant, il est également nécessaire d'enregistrer chaque version java du côté des alternatives de mise à jour. (Parce que update-alternatives est utilisé dans update-java-alternatives.) --Enregistrez la commande décrite dans jinfo dans update-alternatives avec une seule ligne
$ 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-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
En fin de compte, même update-java-alternatives ne change pas tout. .. ..
$ 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
――En fin de compte, n'y a-t-il pas d'autre choix que de basculer toutes les commandes liées à Java en utilisant des alternatives de mise à jour? .. .. --L'enregistrement à update-alternatives est le même que la procédure effectuée dans la partie 2.
$ 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 commandes liées à Java dans des alternatives avec une seule doublure
$ cat .java-1.9.0-openjdk-amd64.jinfo | grep -v -e '=' -e '^$' | awk '{system("sudo update-alternatives --set " $2 " " $3 )}'
--Confirmez que toutes les commandes liées à Java ont été commutées.
$ 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
―― Aucune des méthodes ci-dessus ne changera JAVA_HOME, vous devez donc changer individuellement. --Bien que cela soit décrit dans jinfo, certains fichiers n'existent pas réellement. Dans ce cas, ʻupdate-alternatives: error: alternative path / usr / lib / jvm / java-9-openjdk-amd64 / bin / appletviewer doesn ' Une erreur telle que t exist` se produira, mais il ne semble y avoir aucun problème particulier.
Recommended Posts