本教程将向您展示如何在基于 RPM 的 Linux 发行版的当前版本上安装 Java:Red Hat Enterprise Linux、CentOS、Fedora 和 Rocky Linux。 Java 是一种流行的编程语言和软件平台,允许您运行许多服务器端应用程序。
本教程涵盖安装最新的默认 Java 版本,以及挑选任何旧版本进行安装,以及根据需要在环境中的多个版本之间切换。
在开始本指南之前,您应该拥有一个常规的非 root 用户sudo
服务器上配置的权限 - 这是您登录服务器时应使用的用户。您可以按照我们的步骤了解如何配置常规用户帐户Rocky Linux 8 初始服务器设置指南.
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 版本。
本节将向您展示如何使用以下命令安装预构建的 OpenJDK JRE 和 JDK 软件包yum
包管理器。yum
是使用 RPM 包的发行版的默认包管理器。
要使用 yum 安装 OpenJDK,您可以运行sudo yum install java
:
-
sudo yum install java
默认情况下,尝试安装java
不指定版本将解析为 OpenJDK JRE 最常见的稳定版本。正如您从输出中看到的,截至撰写本文时,即java-1.8.0-openjdk
:
Output
Last 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 继续安装。系统还可能会提示您接受要从中安装的存储库的签名密钥:
Output
Importing 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]:
Enter y
然后再次按 Enter 键。
您现在应该已经安装了可以运行的 Java。为了确认这一点,您可以运行java -version
,检查您的环境中现在可用的 Java 版本:
-
java -version
Note:大多数情况下,命令行参数前面有一个破折号(表示单字母参数)或两个破折号(表示全字参数)。 Java 遵循一种不同的约定,即对所有参数使用一个破折号,在本例中,-version
.
Output
openjdk 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。为了安装完整的 OpenJDKJDK,你应该安装相应的包-devel
附加到其名称上。这是其他编程环境的开发包的常见约定,Java 也遵循这一约定,尽管术语在这里出现了尴尬的重叠。
和以前一样,您可以安装java-devel
获取默认版本,或指定java-1.8.0-openjdk-devel
:
-
sudo yum installjava开发
Output
DigitalOcean 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。
最近,OpenJDK 更改了其版本编号方案,以更紧密地跟踪 Oracle Java 版本。为了安装更新版本的 OpenJDK,您可以在包名称中指定版本号,就像使用1.8.0
。例如,为了安装 OpenJDK 17,您可以yum install java-17-openjdk
:
-
sudo yum installjava-17-openjdk
Output
Last 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
…
和以前一样,您可以通过附加来安装完整的 JDK 环境-devel
到包名称。然而,在此之后,运行java
默认情况下,程序仍将使用您之前安装的 OpenJDK 1.8.0 版本,您可以通过运行来确认java -version
again:
-
java -version
Output
openjdk 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 版本。
如果您安装了多个版本的 Java,您可能需要将其中一个设置为默认版本(即当用户运行java
命令)。此外,某些应用程序需要设置某些环境变量来定位要使用的 Java 安装。
The alternatives
command,通过符号链接管理默认命令,可以用来选择默认的Java版本。列出可以管理的 Java 的可用版本alternatives
, use alternatives –config java
:
-
sudo备择方案--config java
输出应列出您已安装的两个 Java 版本:
output
There 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
Output
openjdk 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
or JRE_HOME
环境变量来确定哪些java
可执行文件来使用。
For example, if you installed Java to (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin
(i.e. your java
executable is located at <^>(/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java
), you could set your JAVA_HOME
environment variable in a bash shell or script like so:
-
export JAVA_HOME=(/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre
Note: The JAVA_HOME
环境变量建议您设置以以下结尾的 Java 安装路径/jre
目录。这一约定可以从一个变量更改为下一个变量,因此在进行更改时最好仔细检查示例。
如果你想JAVA_HOME
要默认为系统上的每个用户设置,请将上一行添加到/etc/environment
文件。您可以使用将其附加到文件中echo
and >>
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 版本。
本指南的这一部分将向您展示如何安装 Oracle Java JRE 和 JDK(64 位),这是撰写本文时这些软件包的最新版本。
Note:如果您使用此页面上的交互式终端,您将无法下载 Oracle Java 并将其安装到环境中。
在本节中,我们将使用wget
命令下载 Oracle Java 软件包。wget
默认情况下,您的 Linux 发行版中可能不包含它,因此为了继续操作,您需要通过运行以下命令来安装它:
-
sudo yum install wget
在安装 Oracle Java 之前,您必须接受 Java SE 的 Oracle 二进制代码许可协议,这是其中包含的步骤之一。
Note:为了安装 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"
然后安装 RPMyum localinstall
(如果您下载了不同的版本,请替换此处的文件名):
-
sudo yum localinstall jdk-17_linux-x64_bin.rpm
在出现确认提示时,输入y
然后按 Enter 继续安装。
您可以删除之前下载的存档文件:
-
rm ~/jdk-17_linux-x64_bin.rpm
您现在可以重新运行alternatives
命令,您应该会看到使用 Oracle Java 的第三个选项:
-
sudo备择方案--config java
output
There 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
命令和环境变量。这些都是 Linux 环境管理的基本方面,而 Java 提供了一个特别好的使用它们的示例,因为它有许多不同的版本。
接下来,你可能想学习如何在其他环境中使用 Java.