几个月前我写过文章 Ubuntu 16.04 安装 JDK ,当时是以 JDK 8 为例子,现在 Java 11 出来了,相应的更新一版。

我们首选使用 apt 来进行安装管理

Oracle JDK

首先添加 LinuxUprising Java PPA 仓库到软件源中,并下载 Oracle Java 11

1
2
3
$ sudo add-apt-repository ppa:linuxuprising/java
$ sudo apt update
$ sudo apt install oracle-java11-installer
1
2
3
4
$ java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

OpenJDK

18.04 LTS

首先我们使用 apt 进行搜索

1
$ sudo apt search openjdk

如果你的系统版本足够新,比如 18.04 LTS,那么很有可能搜索出这样的条目

1
2
openjdk-11-jdk/bionic-updates,bionic-security,now 10.0.2+13-1ubuntu0.18.04.4 amd64 [installed,automatic]
OpenJDK Development Kit (JDK)

这代表软件源已经更新了 Java 11,这样直接安装默认版本即可

1
$ sudo apt install -y default-jdk

更老版本

如果是更早的版本,那么很大程度上并没有更新该源,那么这时候我们需要使用 tar 包进行安装

1
2
3
$ wget https://download.java.net/java/GA/jdk11/28/GPL/openjdk-11+28_linux-x64_bin.tar.gz -O /tmp/openjdk-11+28_linux-x64_bin.tar.gz
$ sudo tar xfvz /tmp/openjdk-11+28_linux-x64_bin.tar.gz --directory /usr/lib/jvm
$ rm -f /tmp/openjdk-11+28_linux-x64_bin.tar.gz

使用 update-alternatives 对它进行管理

1
2
$ sudo sh -c 'for bin in /usr/lib/jvm/jdk-11/bin/*; do update-alternatives --install /usr/bin/$(basename $bin) $(basename $bin) $bin 100; done'
$ sudo sh -c 'for bin in /usr/lib/jvm/jdk-11/bin/*; do update-alternatives --set $(basename $bin) $bin; done'

最后查看 java 版本

1
2
3
4
$ java -version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4, mixed mode)

切换版本

现在我们已经有两个版本的 Java,我们可以通过 update-alternatives 来选择一个作为默认版本

1
2
3
4
5
6
7
8
9
10
$ 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-11-oracle/bin/java 1091 auto mode
* 1 /usr/lib/jvm/java-11-oracle/bin/java 1091 manual mode
2 /usr/lib/jvm/jdk-11/bin/java 100 manual mode

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

随后输入 Selection 对应的数字即可完成切换

03-16 21:32