如何在 Ubuntu 18.04 上安装 Java

Java 是世界上最流行的编程语言之一,用于构建不同类型的跨平台应用程序。

本教程会逐步说明如何在 Ubuntu 18.04 上安装 OpenJDK 和 Oracle Java 。

本教程同样适用于 Ubuntu 16.04 和任何基于 Ubuntu 的发行版,包括 Kubuntu , Linux Mint 和 Elementary OS 。

先决条件

在继续本教程之前,请确保以具有 sudo 权限的用户身份登录。

Java 的版本和实现

Java 分为三个不同版本:标准版(SE),企业版(EE)和微型版(ME)。本教程介绍 Java SE (标准版)的安装。

OpenJDK 和 Oracle Java 是 Java 的两个主要实现,除了 Oracle Java 还有一些额外的商业功能之外,它们几乎没有区别。

我们将向您展示如何安装各种 Java 包。如果您不知道要使用哪个 Java 实现或版本,一般建议坚持使用 Ubuntu 18.04 上提供的默认 OpenJDK 版本。

安装默认 OpenJDK

Ubuntu 18.04 中的默认 Java 版本是 OpenJDK 10. 一旦下一个 LTS 版本 OpenJDK 11 发布,它将成为 Ubuntu 18.04 中的默认 Java 版本。

按照以下步骤在 Ubuntu 机器上安装 Java OpenJDK :

  1. 首先,使用以下命令更新 apt 包索引:

    sudo apt update
  2. 更新包索引后,安装默认的 Java OpenJDK 包:

    sudo apt install default-jdk
  3. 通过运行以下命令打印 Java 版本来验证安装:

    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)

安装 OpenJDK 8

在撰写本文时, OpenJDK 8 是 Java 的当前 LTS 版本。如果您的应用程序需要 Java 8 ,则可以通过键入以下命令来安装它:

sudo apt update
sudo apt install openjdk-8-jdk

使用 APT 安装 Oracle Java

在本节中,我们将介绍从 WebUpd8 软件仓库安装 Oracle Java 的步骤。 WebUpd8 包将自动为我们下载和安装 Oracle Java 8 JDK 。

  1. 首先,将 WebUpd8 软件仓库添加到源列表:

    sudo add-apt-repository ppa:webupd8team/java

    如果收到错误消息 add-apt-repository command not found 则说明您需要安装该 software-properties-common 软件包。

    添加软件仓库时,您将看到如下消息:

    按 Enter 继续,安装程序将更新包索引。

  2. 更新软件包列表并安装 Oracle Java 8:

    sudo apt update
    sudo apt install oracle-java8-installer

    要安装软件包,您需要按 Enter ,然后通过选择 Yes 接受 Oracle 二进制代码许可条款,如下所示:

    一旦接受许可,安装程序将从 Oracle 下载页面下载 Java tar.gz 包,并在您的 Ubuntu 系统上安装 Oracle Java 8 JDK 。

从 Oracle 网站安装 Oracle Java

在撰写本文时, WebUpd8 软件仓库仅包含 Java 8 的最新版本. 如果要安装 Java 10 或任何其他特定的 Oracle Java 版本,则只需从 Oracle 的下载页面下载 Java 压缩包即可。

在本指南中,我们将下载最新的 Java 版本 10。 在下载 Java tar.gz 文件之前,您应该检查是否有新版本可用。

按照以下步骤从 Oracle 网站安装最新的 Oracle Java :

  1. 首先使用 curl 命令下载 Java 归档文件:

    curl -L -b "oraclelicense=a" -O http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.tar.gz

    上面的命令将自动接受 Oracle 许可协议。

  2. 接下来,为 Java 安装创建一个目录:

    sudo mkdir /usr/local/oracle-java-10
  3. 解压缩 .tar.gz 文件到刚刚创建的目录:

    sudo tar -zxf jdk-10.0.2_linux-x64_bin.tar.gz -C /usr/local/oracle-java-10
  4. 解压缩文件后,运行以下命令以创建新的替代方案:

    sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/oracle-java-10/jdk-10.0.2/bin/java" 1500
    sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/oracle-java-10/jdk-10.0.2/bin/javac" 1500
    sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/oracle-java-10/jdk-10.0.2/bin/javaws" 1500

    alternatives 命令用于创建和删除确定默认命令的符号链接。

我们已经把 Java 文件解压缩到了 /usr/local/oracle-java-10 目录中。如果需要,您可以使用不同的目录。

设置默认 Java 版本

要检查默认 Java 版本,您将使用以下命令:

java -version
openjdk version "10.0.1" 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 10.0.1+10-Ubuntu-3ubuntu1, mixed mode)

如果服务器上安装了多个 Java 版本,可以使用 update-alternatives 工具更改默认版本,如下所示:

sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
3 /usr/lib/jvm/java-8-oracle/jre/bin/java 1081 manual mode
4 /usr/local/oracle-java-10/jdk-10.0.2/bin/java 1500 manual mode


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

要更改默认 Java 版本,只需输入版本号( “Selection” 列中的数字),然后按 Enter

设置 JAVA_HOME 环境变量

一些用 Java 编写的应用程序可能会使用 JAVA_HOME 环境变量来确定 Java 安装位置。

要设置 JAVA_HOME 环境变量,请使用该 update-alternatives 命令查找 Java 的安装位置:

sudo update-alternatives --config java

在我们的例子中,安装路径如下:

  • OpenJDK 10(11)位于 /usr/lib/jvm/java-11-openjdk-amd64
  • OpenJDK 8位于 /usr/lib/jvm/java-8-openjdk-amd64/jre
  • Oracle Java 8位于 /usr/lib/jvm/java-8-oracle/jre
  • Oracle Java 10位于 /usr/local/oracle-java-10/jdk-10.0.2

复制首选安装的安装路径。接下来,打开 /etc/environment 文件:

sudo nano /etc/environment

在文件 /etc/environment 末尾添加以下行:

JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

确保使用默认的 Java 版本的路径上面文本中的路径。

您可以注销然后重新登录,也可以运行以下命令将更改应用于当前会话:

source /etc/environment

要验证是否正确设置了 JAVA_HOME 环境变量,请运行:

echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-amd64

/etc/environment 是一个系统范围的配置文件,供所有用户使用。如果要 JAVA_HOME 基于每个用户设置变量,请将该行添加到 .bashrc 或者用户登录时加载的任何其他配置文件中。

卸载 Java

如果出于任何原因想要卸载 Java 软件包,可以像卸载任何使用 apt 安装的其他软件包一样卸载它。

例如,如果要卸载 openjdk-8-jdk 软件包,只需运行:

sudo apt remove openjdk-8-jdk

结论

在本教程中,您学习了如何在 Ubuntu 服务器上安装和管理多个 Java 版本。

您现在可以安装在 Java 上运行的应用程序,例如 Tomcat , JBoss/WildFly , Jetty , Glassfish , WebLogic , Cassandra , Jenkins , Gradle 等等。