如何在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软件包索引。
- 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
您将收到以下输出:
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。首先创建此目录。
- 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,则会输出以下结果。
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版本相关联的数字,将其作为默认选项,或按回车键保留当前设置不变。
你可以对其他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安装以及其安装路径。
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。
- sudo nano /etc/environment
此文件可能最开始是空白的。在文件末尾添加以下行,确保将被突出显示的路径替换为您自己复制的路径,并且不包括路径中的 bin/ 部分。
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
修改此文件会为您系统上的所有用户设置JAVA_HOME路径。
保存文件并退出编辑器。如果你正在使用nano,可以通过按下CTRL + X,Y,然后按下回车来完成。
现在重新加载该文件以应用更改到当前会话:
- source /etc/environment
验证环境变量是否已设置:
- echo $JAVA_HOME
您的输出将返回您之前设置的路径。
Output/usr/lib/jvm/java-11-openjdk-amd64
其他用户需要执行命令 source /etc/environment 或者注销并重新登录以应用此设置。
结论
在这个教程中,您安装了多个版本的Java并学会了如何管理它们。现在您可以安装运行在Java上的软件,例如Tomcat,Jetty,Glassfish,Cassandra或Jenkins。