Debian 11系统:Apt命令安装Java JDK的完整指南

引言

Java和JVM(Java虚拟机)是许多软件运行所必需的基础,包括Tomcat、Jetty、Glassfish、Cassandra和Jenkins等流行应用。

本指南将详细介绍如何在Debian 11系统上,使用apt包管理器安装不同版本的Java运行环境(JRE)和Java开发工具包(JDK)。您将学习如何安装开源的OpenJDK以及Oracle官方的JDK。完成安装后,您将能够根据项目需求灵活选择Java版本,无论是用于软件开发(JDK)还是仅仅运行Java应用程序(JRE)。

先决条件

在开始本教程之前,请确保您已准备好以下环境:

  • 一台已安装Debian 11操作系统的服务器,并且配置了一个非root用户,该用户拥有sudo权限。如果您尚未完成此设置,可以参考我们的Debian 11初始服务器设置指南进行配置。

步骤1 — 安装Java

Java的安装主要涉及两个核心组件:JDK(Java开发工具包)和JRE(Java运行环境)。JDK提供了开发Java应用程序所需的所有基本工具,如编译器和调试器;而JRE则用于执行Java程序。在Debian 11上,您有两种主要的Java安装选择:OpenJDK和Oracle JDK。

OpenJDK是Java的开源实现,通常已预打包在Debian的软件仓库中。Oracle JDK则是Java的原始版本,由Java的开发者Oracle公司全面维护。

这两个版本都得到了Oracle的官方认可。它们都由Oracle开发,但OpenJDK由于其开源性质,也包含了社区的贡献。值得注意的是,从Java 11开始,根据Oracle的详细说明,OpenJDK和Oracle JDK在功能上已完全相同。选择安装哪个版本主要取决于您的许可需求。此外,OpenJDK可以选择单独安装JRE,而Oracle JDK则通常自带JRE。

选项1——安装默认的JRE/JDK

在Debian 11上安装Java的一个便捷选项是使用系统预装的版本。Debian 11默认包含OpenJDK 11,这是一个与Java 11兼容的开源JRE和JDK变体。

Java 11是当前Java的长期支持(LTS)版本。

要安装OpenJDK版本的Java,首先需要更新apt软件包索引:

  1. sudo apt update

接下来,检查系统是否已安装Java:

  1. java -version

如果Java尚未安装,您将收到以下信息:

Output
-bash: java: command not found

执行以下命令安装来自OpenJDK 11的默认JRE:

  1. sudo apt install default-jre

JRE能够让您运行几乎所有的Java软件。

通过以下命令验证安装是否成功:

  1. java -version

您将看到类似以下的输出:

Output
openjdk version "11.0.16" 2022-07-19
OpenJDK Runtime Environment (build 11.0.16+8-post-Debian-1deb11u1)
OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Debian-1deb11u1, mixed mode, sharing)

为了编译和运行某些特定的基于Java的软件,您可能除了JRE还需要JDK。要安装JDK(此操作也会同时安装JRE),请执行以下命令:

  1. sudo apt install default-jdk

通过检查Java编译器javac的版本来确认JDK是否已成功安装:

  1. javac -version

您将收到以下输出结果:

Output
javac 11.0.16

接下来,您将学习如何安装Oracle的官方JDK和JRE。

选项2 — 安装Oracle JDK 11

Oracle的Java许可协议不允许通过软件包管理器自动安装。要安装官方的Oracle JDK,您必须首先创建一个Oracle账户并手动下载JDK文件。然后,您需要添加一个新的软件包仓库,并借助第三方安装脚本,才能使用apt来安装您所需的版本。Oracle JDK已经包含了JRE,因此您无需单独安装JRE。

您需要下载的Oracle JDK版本必须与安装程序脚本的版本匹配。要查找所需的版本,请访问oracle-java11-installer页面。您的软件包位置如下图所示。

Oracle Java安装程序网页,列出了所有当前可用的软件包

在此图片中,脚本的版本是11.0.13。因此,您需要下载Oracle JDK 11.0.13。请注意,版本号可能会根据您安装软件的时间而有所变化。

您无需从此页面下载任何内容,因为您很快将通过apt下载安装脚本。

接下来,访问“存档下载”页面,并找到与您所需版本相匹配的版本。

Oracle Java存档下载网页,您可以在其中找到非最新版本的Java

从此列表中选择“Linux x64 压缩归档 .tar.gz”包。

Oracle Java 11.0.13下载网页。已选择Linux x64压缩归档文件。

您将看到一个屏幕,要求您接受Oracle的许可协议。请勾选复选框以接受许可协议,然后点击“下载”按钮。您的下载将开始。在下载开始之前,您可能需要再次登录您的Oracle账户。

一旦文件下载完成,您需要将其传输到您的服务器上。在您的本地机器上,使用scp命令将文件上传到您的james用户的主目录中。此操作适用于macOS、Linux或使用Windows子系统的Windows系统。以下命令假设您将Oracle JDK文件保存在本地机器的下载文件夹中:

  1. scp Downloads/jdk-11.0.13_linux-x64_bin.tar.gz james@your_server_ip:~

文件上传完成后,请返回您的服务器并添加第三方软件源,以帮助您安装Oracle的Java。

首先,导入用于验证即将安装的软件的签名密钥:

  1. sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/oracle-jdk11-installer.gpg --keyserver keyserver.ubuntu.com --recv-keys EA8CACC073C3DB2A

您将收到以下输出:

输出gpg: 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

接下来,将存储库添加到您的软件包源列表中。

  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

更新您的软件包列表以使新软件可以安装。

  1. sudo apt update

安装程序将在/var/cache/oracle-jdk11-installer-local目录下寻找您下载的Oracle JDK。首先创建此目录。

  1. sudo mkdir -p /var/cache/oracle-jdk11-installer-local/

然后,将Oracle JDK的存档文件移动到该目录。

  1. sudo cp jdk-11.0.13_linux-x64_bin.tar.gz /var/cache/oracle-jdk11-installer-local/

最后,安装该软件包。

  1. sudo apt install oracle-java11-installer-local

安装程序会首先要求您接受Oracle许可协议。接受协议后,安装程序将提取Java软件包并进行安装。

现在,您将学习如何选择要使用的Java版本。

第二步 – 管理Java

您可以在一个服务器上安装多个Java版本。您可以使用update-alternatives命令配置命令行上的默认版本。

  1. sudo update-alternatives --config java

如果您在本教程中安装了两个版本的Java,则会输出以下结果。

输出There 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版本关联的数字,将其作为默认选项,或按回车键保留当前设置不变。

您可以对其他Java命令进行同样的操作,比如编译器(javac)。

  1. sudo update-alternatives --config javac

可以使用此命令运行的其他命令包括但不限于:keytooljavadocjarsigner

第三步 – 设置JAVA_HOME环境变量

许多使用Java编写的程序通过JAVA_HOME环境变量来确定Java安装位置。

要设置这个环境变量,首先确定Java安装的位置。使用update-alternatives命令。

  1. sudo update-alternatives --config java

此输出将列出每个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

在这种情况下,安装路径如下:

  • Oracle Java 11位于/usr/lib/jvm/java-11-oracle/bin/java
  • OpenJDK 11位于/usr/lib/jvm/java-11-openjdk-amd64/bin/java

这些路径显示了Java可执行文件的路径。

接下来,复制您所选择的安装路径,不包括末尾的bin/java组件。然后使用nano或您喜欢的文本编辑器打开/etc/environment

  1. sudo nano /etc/environment

此文件可能最开始是空白的。在文件末尾添加以下行,确保将被突出显示的路径替换为您自己复制的路径,并且不包括路径中的bin/部分。

以下是/etc/environment的释义:
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

修改此文件会为您系统上的所有用户设置JAVA_HOME路径。

保存文件并退出编辑器。如果您正在使用nano,可以通过按下CTRL + X,然后输入Y,最后按下回车来完成。

现在重新加载该文件以应用更改到当前会话:

  1. source /etc/environment

验证环境变量是否已设置:

  1. echo $JAVA_HOME

您的输出将返回您之前设置的路径:

输出/usr/lib/jvm/java-11-openjdk-amd64

其他用户需要执行 source /etc/environment 命令,或者注销并重新登录以应用此设置。

结论

在本教程中,您安装了多个版本的 Java 并学会了如何管理它们。现在您可以安装运行在 Java 上的软件,例如 Tomcat、Jetty、Glassfish、Cassandra 或 Jenkins。

bannerAds