如何在 Ubuntu 22.04 上使用 Apt 安装 Java
介绍
许多软件都需要 Java 和 JVM(Java 的虚拟机),包括 Jenkins。
在本指南中,您将使用 apt
安装各种版本的 Java Runtime Environment (JRE) 和 Java Developer Kit (JDK)。您将安装 OpenJDK 以及来自 Oracle 的官方 JDK。然后,您将选择要用于项目的版本。完成后,您将能够使用 JDK 开发软件或使用 Java Runtime 运行软件。
先决条件
要学习本教程,您需要:
- 按照 Ubuntu 22.04 初始服务器设置指南教程设置一台 Ubuntu 22.04 服务器,包括 sudo 非根用户和防火墙。
第 1 步 — 安装 Java
Java 安装带有两个主要组件。 JDK 提供了在 Java 中进行开发的基本软件工具,例如编译器和调试器。 JRE 用于实际执行Java 程序。此外,有两个主要的 Java 安装选项可供选择。 OpenJDK 是 Java 的开源实现,并与 Ubuntu 打包在一起。 Oracle JDK 是 Java 的原始版本,由 Java 的开发者 Oracle 全面维护。
这两个版本都是Oracle官方认可的。两者也是由 Oracle 开发的,但 OpenJDK 由于其开源性质而增加了社区贡献。但是,从 Java 11 开始,这两个选项现在在功能上是相同的,正如 Oracle 所详述的那样。选择安装哪个取决于为您的情况选择合适的许可。此外,OpenJDK 可以选择单独安装 JRE,而 OracleJDK 则与其 JRE 打包在一起。
选项 1 — 安装默认的 JRE/JDK
安装 Java 的一种选择是使用与 Ubuntu 一起打包的版本。默认情况下,Ubuntu 22.04 包含 Open JDK 11,它是 JRE 和 JDK 的开源变体。
要安装 Java 的 OpenJDK 版本,首先更新您的 apt
包索引:
- sudo apt update
接下来,检查是否已经安装了 Java:
- java -version
如果当前未安装 Java,您将获得以下输出:
OutputCommand 'java' not found, but can be installed with:
sudo apt install default-jre # version 2:1.11-72build1, or
sudo apt install openjdk-11-jre-headless # version 11.0.14+9-0ubuntu2
sudo apt install openjdk-17-jre-headless # version 17.0.2+8-1
sudo apt install openjdk-18-jre-headless # version 18~36ea-1
sudo apt install openjdk-8-jre-headless # version 8u312-b07-0ubuntu1
执行以下命令从 OpenJDK 11 安装 JRE:
- sudo apt install default-jre
JRE 将允许您运行几乎所有的 Java 软件。
使用以下命令验证安装:
- java -version
您将收到类似于以下内容的输出:
Outputopenjdk version "11.0.14" 2022-01-18
OpenJDK Runtime Environment (build 11.0.14+9-Ubuntu-0ubuntu2)
OpenJDK 64-Bit Server VM (build 11.0.14+9-Ubuntu-0ubuntu2, mixed mode, sharing)
除了 JRE 之外,您可能还需要 JDK 才能编译和运行某些特定的基于 Java 的软件。要安装 JDK,请执行以下命令,这也会安装 JRE:
- sudo apt install default-jdk
通过检查 Java 编译器 javac
的版本来验证是否安装了 JDK:
- javac -version
您将看到以下输出:
Outputjavac 11.0.14
接下来,您将学习如何安装 Oracle 的官方 JDK 和 JRE。
选项 2 — 安装 Oracle JDK 11
Oracle 的 Java 许可协议不允许通过包管理器自动安装。安装Oracle JDK,Oracle官方发布的JDK,需要第三方安装脚本。 Oracle JDK 附带 JRE,因此您无需单独安装它。
您需要下载的 Oracle JDK 版本必须与安装程序脚本的版本相匹配。要找出您需要的版本,请访问 oracle-java11-installer
页面。
找到Jammy的包,如下图所示:

在此图像中,脚本的版本是 11.0.13
。在这种情况下,您需要 Oracle JDK 11.0.13。您的版本号可能因安装软件的时间而异。
您无需从此页面下载任何内容;您将很快通过 apt
下载安装脚本。
接下来,访问存档下载并找到与您需要的版本相匹配的版本。
从此列表中,选择 Linux x64 压缩存档 .tar.gz
包:

您将看到一个屏幕,要求您接受 Oracle 许可协议。选中复选框以接受许可协议,然后按“下载”按钮。您的下载将开始。在开始下载之前,您可能需要再次登录您的 Oracle 帐户。
下载文件后,您需要将其传输到您的服务器。在您的本地计算机上,将文件上传到您的服务器。在使用适用于 Linux 的 Windows 子系统的 macOS、Linux 或 Windows 上,使用 scp
命令将文件传输到您的 sammy
的主目录用户。以下命令假定您已将 Oracle JDK 文件保存到本地计算机的 Downloads
文件夹中:
- scp Downloads/jdk-11.0.13_linux-x64_bin.tar.gz sammy@your_server_ip:~
文件上传完成后,返回到您的服务器并添加将帮助您安装 Oracle Java 的第三方存储库。
首先,导入用于验证您要安装的软件的签名密钥:
- sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/oracle-jdk11-installer.gpg --keyserver keyserver.ubuntu.com --recv-keys EA8CACC073C3DB2A
你会看到这个输出:
Outputgpg: keybox '/usr/share/keyrings/oracle-jdk11-installer.gpg' created
gpg: /tmp/trustdb.gpg: trustdb created
gpg: key EA8CACC073C3DB2A: public key "Launchpad PPA for Linux Uprising" imported
gpg: Total number processed: 1
gpg: imported: 1
接下来,将存储库添加到包源列表中:
- echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-jdk11-installer.gpg] https://ppa.launchpadcontent.net/linuxuprising/java/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/oracle-jdk11-installer.list > /dev/null
更新您的软件包列表以使新软件可供安装:
- sudo apt update
安装程序将查找您在 /var/cache/oracle-jdk11-installer-local
中下载的 Oracle JDK。创建此目录并将 Oracle JDK 存档移至该目录:
- sudo mkdir -p /var/cache/oracle-jdk11-installer-local/
- sudo cp jdk-11.0.13_linux-x64_bin.tar.gz /var/cache/oracle-jdk11-installer-local/
最后,安装包:
- sudo apt install oracle-java11-installer-local
安装程序首先会要求您接受 Oracle 许可协议。接受协议,然后安装程序将提取 Java 包并安装它。
现在您将了解如何选择要使用的 Java 版本。
第 2 步 — 管理 Java
您可以在一台服务器上安装多个 Java。您可以使用 update-alternatives
命令配置在命令行上使用的默认版本。
- sudo update-alternatives --config java
如果您在本教程中安装了两个版本的 Java,则输出将如下所示:
OutputThere are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
* 2 /usr/lib/jvm/java-11-oracle/bin/java 1091 manual mode
Press <enter> to keep the current choice[*], or type selection number:
选择与 Java 版本关联的编号以将其用作默认值,或按 ENTER
保留当前设置。
您可以对其他 Java 命令执行此操作,例如编译器 (javac
):
- sudo update-alternatives --config javac
可以运行此命令的其他命令包括但不限于:keytool
、javadoc
和 jarsigner
。
第 3 步 — 设置 JAVA_HOME 环境变量
许多使用 Java 编写的程序使用 JAVA_HOME
环境变量来确定 Java 安装位置。
要设置此环境变量,首先要确定 Java 的安装位置。使用 update-alternatives
命令:
- sudo update-alternatives --config java
此命令显示每个 Java 安装及其安装路径:
OutputThere are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
* 2 /usr/lib/jvm/java-11-oracle/bin/java 1091 manual mode
Press <enter> to keep the current choice[*], or type selection number:
在这种情况下,安装路径如下:
- OpenJDK 11 位于
/usr/lib/jvm/java-11-openjdk-amd64/bin/java。
- Oracle Java 位于
/usr/lib/jvm/java-11-oracle/jre/bin/java
。
从您的首选安装中复制路径。然后使用 nano
或您最喜欢的文本编辑器打开 /etc/environment
:
- sudo nano /etc/environment
在此文件的末尾,添加以下行,确保将突出显示的路径替换为您自己复制的路径,并且不包括路径的 bin/
部分:
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
修改此文件将为您系统上的所有用户设置 JAVA_HOME
路径。
保存文件并退出编辑器。
现在重新加载此文件以将更改应用到当前会话:
- source /etc/environment
验证是否设置了环境变量:
- echo $JAVA_HOME
你会看到你刚刚设置的路径:
Output/usr/lib/jvm/java-11-openjdk-amd64
其他用户将需要执行命令 source /etc/environment
或注销并重新登录以应用此设置。
结论
在本教程中,您安装了多个版本的 Java 并学习了如何管理它们。您现在可以安装在 Java 上运行的软件,例如 Tomcat、Jetty、Glassfish、Cassandra 或 Jenkins。