如何在Debian 11上使用Apt安装Java

引言

Java和JVM(Java虚拟机)是许多软件所必需的,包括Tomcat、Jetty、Glassfish、Cassandra和Jenkins。

在本指南中,您将使用apt安装不同版本的Java Runtime Environment(JRE)和Java开发工具包(JDK)。您将安装OpenJDK以及来自Oracle的官方JDK。然后,您将选择您想要为您的项目使用的版本。完成后,您将能够使用JDK开发软件或使用Java Runtime运行软件。

先决条件

要按照这个教程进行操作,你需要准备以下物品:

  • One Debian 11 server with a non-root, sudo-enabled user. You can set this up by following our Debian 11 initial server setup guide.

步骤1 — 安装Java

安装Java有两个主要组件。JDK提供了开发Java所需的基本软件工具,如编译器和调试器。JRE用于执行Java程序。此外,有两个主要的Java安装选项可供选择。OpenJDK是Java的开源实现,Debian中已经打包。Oracle JDK是Java的原版,由Java的开发者Oracle全面维护。

这两个版本都是Oracle官方认可的。它们都是由Oracle开发的,但是由于OpenJDK的开源性质,它还包含了社区贡献。然而,从Java 11开始,根据Oracle的详细说明,这两个选项在功能上现在已经完全相同。选择安装哪个版本取决于您的情况下选择适当的许可证。此外,OpenJDK还可以选择单独安装JRE,而OracleJDK则自带JRE。

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

在安装Java时的一个选择是使用Debian预装的版本。默认情况下,Debian 11包含OpenJDK 11版本,它是JRE和JDK的开源变体,与Java 11兼容。

Java 11 是目前的 Java 长期支持版本。

要安装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页面。您的软件包位置如下图所示。

The Oracle Java installer web page listing all the currently available packages

在这个图像中,脚本的版本是11.0.13。因此,您需要下载Oracle JDK 11.0.13。版本号可能会根据您安装软件的时间而有所变化。
您不需要从此页面下载任何内容,因为您很快就会通过apt下载安装脚本。

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

The Oracle Java archive downloads web page where you can find versions of Java that are not the latest release.

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

The Oracle Java 11.0.13 download webpage. Selected is the Linux x64 Compressed Archive file.

您将看到一个屏幕,要求您接受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

您将收到以下输出:

Output
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,则会输出以下结果。

Output
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

可以使用此命令运行的其他命令包括但不限于:keytool、javadoc和jarsigner。

步骤3 — 设置JAVA_HOME环境变量

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

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

  1. sudo update-alternatives --config java

此输出将列出每个Java安装以及其安装路径。

Output
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 is located at /usr/lib/jvm/java-11-oracle/bin/java.
  • OpenJDK 11 is located at /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

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

Output
/usr/lib/jvm/java-11-openjdk-amd64

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

结论

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

发表回复 0

Your email address will not be published. Required fields are marked *