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
软件包索引:
- sudo apt update
接下来,检查系统是否已安装Java:
- java -version
如果Java尚未安装,您将收到以下信息:
Output-bash: java: command not found
执行以下命令安装来自OpenJDK 11的默认JRE:
- sudo apt install default-jre
JRE能够让您运行几乎所有的Java软件。
通过以下命令验证安装是否成功:
- java -version
您将看到类似以下的输出:
Outputopenjdk 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),请执行以下命令:
- sudo apt install default-jdk
通过检查Java编译器javac
的版本来确认JDK是否已成功安装:
- javac -version
您将收到以下输出结果:
Outputjavac 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页面。您的软件包位置如下图所示。
在此图片中,脚本的版本是11.0.13。因此,您需要下载Oracle JDK 11.0.13。请注意,版本号可能会根据您安装软件的时间而有所变化。
您无需从此页面下载任何内容,因为您很快将通过apt
下载安装脚本。
接下来,访问“存档下载”页面,并找到与您所需版本相匹配的版本。
从此列表中选择“Linux x64 压缩归档 .tar.gz”包。

您将看到一个屏幕,要求您接受Oracle的许可协议。请勾选复选框以接受许可协议,然后点击“下载”按钮。您的下载将开始。在下载开始之前,您可能需要再次登录您的Oracle账户。
一旦文件下载完成,您需要将其传输到您的服务器上。在您的本地机器上,使用scp
命令将文件上传到您的james
用户的主目录中。此操作适用于macOS、Linux或使用Windows子系统的Windows系统。以下命令假设您将Oracle JDK文件保存在本地机器的下载文件夹中:
- scp Downloads/jdk-11.0.13_linux-x64_bin.tar.gz james@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
您将收到以下输出:
输出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
接下来,将存储库添加到您的软件包源列表中。
- 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。首先创建此目录。
- sudo mkdir -p /var/cache/oracle-jdk11-installer-local/
然后,将Oracle JDK的存档文件移动到该目录。
- 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版本。
第二步 – 管理Java
您可以在一个服务器上安装多个Java版本。您可以使用update-alternatives
命令配置命令行上的默认版本。
- 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
)。
- sudo update-alternatives --config javac
可以使用此命令运行的其他命令包括但不限于:keytool
、javadoc
和jarsigner
。
第三步 – 设置JAVA_HOME环境变量
许多使用Java编写的程序通过JAVA_HOME
环境变量来确定Java安装位置。
要设置这个环境变量,首先确定Java安装的位置。使用update-alternatives
命令。
- 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
。
- sudo nano /etc/environment
此文件可能最开始是空白的。在文件末尾添加以下行,确保将被突出显示的路径替换为您自己复制的路径,并且不包括路径中的bin/
部分。
以下是/etc/environment
的释义:
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
修改此文件会为您系统上的所有用户设置JAVA_HOME
路径。
保存文件并退出编辑器。如果您正在使用nano,可以通过按下CTRL + X
,然后输入Y
,最后按下回车来完成。
现在重新加载该文件以应用更改到当前会话:
- source /etc/environment
验证环境变量是否已设置:
- echo $JAVA_HOME
您的输出将返回您之前设置的路径:
输出/usr/lib/jvm/java-11-openjdk-amd64
其他用户需要执行 source /etc/environment
命令,或者注销并重新登录以应用此设置。
结论
在本教程中,您安装了多个版本的 Java 并学会了如何管理它们。现在您可以安装运行在 Java 上的软件,例如 Tomcat、Jetty、Glassfish、Cassandra 或 Jenkins。