如何在CentOS、RockyLinux、RHEL和Fedora上安装Java
介绍
本教程将向您展示如何在当前版本的基于 RPM 的 Linux 发行版上安装 Java:Red Hat Enterprise Linux、CentOS、Fedora 和 Rocky Linux。 Java 是一种流行的编程语言和软件平台,可让您运行许多服务器端应用程序。
本教程包括安装最新的默认 Java 版本,以及挑选任何旧版本进行安装,以及根据需要在环境中的多个版本之间切换。
先决条件
在开始本指南之前,您应该在您的服务器上配置一个具有 sudo
权限的普通非 root 用户 - 这是您应该登录到服务器的用户。 您可以按照我们的 Rocky Linux 8 初始服务器设置指南中的步骤来学习如何配置普通用户帐户。
如果您想尝试使用在浏览器中运行的终端安装 Java,请单击以下 Launch an Interactive Terminal!
按钮。 您将能够在 Rocky Linux 8 环境中运行本教程中的命令。
启动交互式终端!
第 1 步 – 安装 OpenJDK
Java 平台有三个不同的版本:标准版 (SE)、企业版 (EE) 和微型版 (ME)。 本教程的重点是 Java SE(Java 平台,标准版)。 几乎所有开源 Java 软件都设计为与 Java SE 一起运行。
可以安装两种不同的 Java SE 包:Java 运行时环境 (JRE) 和 Java 开发工具包 (JDK)。 JRE 是 Java 虚拟机 (JVM) 的实现,它允许您运行已编译的 Java 应用程序和小程序。 JDK 包括 JRE 以及编写、开发和编译 Java 应用程序和小程序所需的其他软件。
Java 也有两种不同的实现:OpenJDK 和 Oracle Java。 两种实现主要基于相同的代码,但 Java 的参考实现 OpenJDK 是完全开源的,而 Oracle Java 包含一些专有代码。 大多数 Java 应用程序都可以正常工作,但您应该使用您的软件需要的任何实现。
您可以在单个系统上安装各种版本的 Java,但大多数人只需要安装一次。 考虑到这一点,请尝试仅安装运行或开发应用程序所需的 Java 版本。
本节将向您展示如何使用 yum
包管理器安装预构建的 OpenJDK JRE 和 JDK 包。 yum
是使用 RPM 包的发行版的默认包管理器。
要使用 yum 安装 OpenJDK,可以运行 sudo yum install java
:
sudo yum install java
默认情况下,尝试安装 java
而不指定版本将解析为最常见的 OpenJDK JRE 稳定版本。 从这个输出中可以看出,在撰写本文时,即 java-1.8.0-openjdk
:
OutputLast metadata expiration check: 0:02:38 ago on Tue 22 Feb 2022 04:57:59 PM UTC. Dependencies resolved. ======================================================================================== Package Arch Version Repo Size ======================================================================================== Installing: java-1.8.0-openjdk x86_64 1:1.8.0.322.b06-2.el8_5 appstream 341 k Installing dependencies: alsa-lib x86_64 1.2.5-4.el8 appstream 488 k atk x86_64 2.28.1-1.el8 appstream 270 k avahi-libs x86_64 0.7-20.el8 baseos 61 k copy-jdk-configs noarch 4.0-2.el8 appstream 29 k cups-libs x86_64 1:2.2.6-40.el8 baseos 432 k fribidi x86_64 1.0.4-8.el8 appstream 88 k …
多个依赖项也将与 Java 一起提供。 在确认提示下,输入 y
然后按 Enter 继续安装。 系统可能还会提示您接受要从以下位置安装的存储库的签名密钥:
OutputImporting GPG key 0x6D745A60: Userid : "Release Engineering <infrastructure@rockylinux.org>" Fingerprint: 7051 C470 A929 F454 CEBE 37B7 15AF 5DAC 6D74 5A60 From : /etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial Is this ok [y/N]:
输入 y
然后再次按 Enter。
您现在应该有一个有效的 Java 安装。 为了确认这一点,您可以运行 java -version
来检查您的环境中现在可用的 Java 版本:
java -version
注意: 大多数时候,命令行参数前面有一个短划线表示单字母参数,或者两个短划线表示全字参数。 Java 遵循对所有参数使用一个破折号的不同约定,在本例中为 -version
。
Outputopenjdk version "1.8.0_322" OpenJDK Runtime Environment (build 1.8.0_322-b06) OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)
Java 命名约定和 Linux 包命名约定之间的交互可能会有些混乱。 在本教程的前面部分,我们阐明了用于开发的完整 JDK 环境与用于运行 Java 应用程序的 JRE 环境之间的区别。 虽然 OpenJDK 是 Java 的开源发行版的名称,但您实际上只是安装了 OpenJDK JRE。 为了安装完整的 OpenJDK JDK,您应该安装相应的软件包,并在其名称后附加 -devel
。 这是用于其他编程环境的开发包的通用约定,Java 也遵循该约定,尽管术语在这里重叠。
和之前一样,你可以安装 java-devel
来获取默认版本,或者指定 java-1.8.0-openjdk-devel
:
sudo yum install java-devel
OutputDigitalOcean Droplet Agent 63 kB/s | 3.3 kB 00:00 Dependencies resolved. ======================================================================================== Package Arch Version Repository Size ======================================================================================== Installing: java-1.8.0-openjdk-devel x86_64 1:1.8.0.322.b06-2.el8_5 appstream 9.8 M Transaction Summary ======================================================================================== Install 1 Package Total download size: 9.8 M Installed size: 41 M Is this ok [y/N]:
安装此软件包后,您应该有一个完整的 OpenJDK 环境,可以编译和运行任何没有特定版本不兼容的 Java 软件。 在下一部分中,您将安装和管理其他版本的 Java。
第 2 步 - 安装其他 OpenJDK 版本
最近,OpenJDK 更改了其版本编号方案,以更紧密地跟踪 Oracle Java 版本。 为了安装更新版本的 OpenJDK,您可以在包名称中指定版本号,就像 1.8.0
一样。 例如,为了安装 OpenJDK 17,您可以 yum install java-17-openjdk
:
sudo yum install java-17-openjdk
OutputLast metadata expiration check: 0:03:36 ago on Tue 22 Feb 2022 05:42:44 PM UTC. Dependencies resolved. ======================================================================================== Package Arch Version Repository Size ======================================================================================== Installing: java-17-openjdk x86_64 1:17.0.2.0.8-4.el8_5 appstream 244 k Installing dependencies: adwaita-cursor-theme noarch 3.28.0-2.el8 appstream 646 k adwaita-icon-theme noarch 3.28.0-2.el8 appstream 11 M at-spi2-atk x86_64 2.26.2-1.el8 appstream 88 k at-spi2-core x86_64 2.28.0-1.el8 appstream 168 k colord-libs x86_64 1.4.2-1.el8 appstream 234 k java-17-openjdk-headless x86_64 1:17.0.2.0.8-4.el8_5 appstream 41 M lcms2 x86_64 2.9-2.el8 appstream 163 k …
和以前一样,您可以通过将 -devel
附加到包名称来安装完整的 JDK 环境。 但是,在此之后,运行java
程序仍然会默认使用你之前安装的OpenJDK 1.8.0版本,你可以通过再次运行java -version
来确认:
java -version
Outputopenjdk version "1.8.0_322" OpenJDK Runtime Environment (build 1.8.0_322-b06) OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)
在下一步中,您将管理已安装的 Java 版本。
第 3 步 - 设置您的默认 Java 版本
如果您安装了多个 Java 版本,您可能希望将其中一个设置为默认版本(即 当用户运行 java
命令时将运行的那个)。 此外,某些应用程序需要设置某些环境变量来定位要使用的 Java 安装。
通过符号链接管理默认命令的alternatives
命令可用于选择默认Java版本。 要列出可由 alternatives
管理的可用 Java 版本,请使用 alternatives –config java
:
sudo alternatives --config java
输出应列出您已安装的两个 Java 版本:
outputThere are 2 programs which provide 'java'. Selection Command ----------------------------------------------- *+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java) 2 java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java) Enter to keep the current selection[+], or type selection number:
输入选择编号以选择默认使用的 java
可执行文件。 它将重新排列系统上必要的符号链接,以确保 java
命令指向正确的库集。 您可以根据需要重新运行此命令,java -version
的输出应相应更改:
java -version
Outputopenjdk version "17.0.2" 2022-01-18 LTS OpenJDK Runtime Environment 21.9 (build 17.0.2+8-LTS) OpenJDK 64-Bit Server VM 21.9 (build 17.0.2+8-LTS, mixed mode, sharing)
许多 Java 应用程序还使用 JAVA_HOME
或 JRE_HOME
环境变量来确定要使用哪个 java
可执行文件。
例如,如果您将 Java 安装到 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin
(即 您的 java
可执行文件位于 <^>(/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java
),您可以在 bash shell 或脚本中设置 JAVA_HOME
环境变量,如下所示:
export JAVA_HOME=(/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre
注意: JAVA_HOME
环境变量希望您设置以 /jre
目录结尾的 Java 安装路径。 此约定可以从一个变量更改为下一个变量,因此最好在进行更改时仔细检查示例。
如果您希望默认为系统上的每个用户设置 JAVA_HOME
,请将上一行添加到 /etc/environment
文件中。 您可以使用 echo
和 >>
shell 重定向将其附加到文件中,以避免必须直接编辑 /etc/environment
文件,方法是运行以下命令:
sudo sh -c "echo export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre >> /etc/environment"
在下一步中,您将安装 Oracle 的专有 Java 以及您的 OpenJDK 版本。
第 4 步 – 安装 Oracle Java
本指南的这一部分将向您展示如何安装 Oracle Java JRE 和 JDK(64 位),这是撰写本文时这些软件包的最新版本。
注意:如果您使用此页面的交互式终端,您将无法下载Oracle Java并将其安装到环境中。
在本节中,我们将使用 wget
命令下载 Oracle Java 软件包。 wget
默认情况下可能不包含在您的 Linux 发行版中,因此您需要通过运行以下命令来安装它:
sudo yum install wget
在安装 Oracle Java 之前,您必须接受 Java SE 的 Oracle 二进制代码许可协议,这是包含的步骤之一。
注意:要安装Oracle Java,您需要到Oracle Java下载页面,接受许可协议,并复制相应Linux x86 .rpm
包。 用复制的下载链接代替 wget
命令的突出显示部分。
切换到您的主目录并使用以下命令下载 Oracle Java RPM:
cd ~ wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm"
然后使用 yum localinstall
安装 RPM(如果您下载了不同的版本,请在此处替换文件名):
sudo yum localinstall jdk-17_linux-x64_bin.rpm
在确认提示下,输入 y
然后按 Enter 继续安装。
您可以删除之前下载的存档文件:
rm ~/jdk-17_linux-x64_bin.rpm
您现在可以重新运行 alternatives
命令,您应该会看到使用 Oracle Java 的第三个选项:
sudo alternatives --config java
outputThere are 3 programs which provide 'java'. Selection Command ----------------------------------------------- 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java) + 2 java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java) * 3 /usr/java/jdk-17.0.2/bin/java Enter to keep the current selection[+], or type selection number:
根据您的用例,本教程中的步骤应该足以安装和运行任何可用的 Java 版本。
结论
在本教程中,您使用 yum
包管理器、alternatives
命令和环境变量安装和管理了多个 Java 版本。 这些都是 Linux 环境管理的基本方面,Java 提供了一个特别好的使用它们的例子,因为它有许多不同的版本。
接下来,您可能想学习 如何在其他上下文中使用 Java 。