如何在 CentOS 8 上安装 OpenJDK 11

什么是 OpenJDK?

OpenJDK 或 Open Java Development Kit 是 Java 平台标准版(或 Java SE)的免费开源框架。 它包含虚拟机、Java 类库和 Java 编译器。 Oracle OpenJDK 和 Oracle JDK 的区别在于 OpenJDK 是开源模型的源代码参考点。 同时,Oracle JDK 是 OpenJDK 的延续或高级模型,它不是开源的,需要许可证才能使用。

在本文中,我们将在 Centos 8 上安装 OpenJDK。

先决条件

  • 运行 CentOS 8 的 Liquid Web 核心托管服务器。
  • 具有 root 权限的帐户
  • 在我们的系统上设置的 root 密码。
  • 访问终端窗口或 SSH 命令行界面
[root@host2 ~]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
[root@host2 ~]#

安装 OpenJDK 11

首先,我们要使用以下命令查找 CentOS 8 存储库中列出的 OpenJDK 的可用版本。

[root@host2 ~]# dnf search jdk
Last metadata expiration check: 0:02:37 ago on Fri Aug 21 15:09:18 2020.
========== Name & Summary Matched: jdk ==========
java-11-openjdk-demo.x86_64 : OpenJDK Demos 11
java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos 8
java-11-openjdk-jmods.x86_64 : JMods for OpenJDK 11
java-11-openjdk-src.x86_64 : OpenJDK Source Bundle 11
java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle 8
java-11-openjdk.x86_64 : OpenJDK Runtime Environment 11
copy-jdk-configs.noarch : JDKs configuration files copier
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment 8
java-11-openjdk-javadoc.x86_64 : OpenJDK 11 API documentation
java-1.8.0-openjdk-javadoc.noarch : OpenJDK 8 API documentation
>>>java-11-openjdk-devel.x86_64 : OpenJDK Development Environment 11
java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment 8
java-11-openjdk-headless.x86_64 : OpenJDK Headless Runtime Environment 11
java-1.8.0-openjdk-accessibility.x86_64 : OpenJDK 8 accessibility connector
java-1.8.0-openjdk-headless.x86_64 : OpenJDK Headless Runtime Environment 8
java-11-openjdk-javadoc-zip.x86_64 : OpenJDK 11 API documentation compressed in single archive
java-1.8.0-openjdk-javadoc-zip.noarch : OpenJDK 8 API documentation compressed in single archive
========== Summary Matched: jdk ==========
jmc-core.noarch : Core API for JDK Mission Control
jmc.x86_64 : JDK Mission Control is a profiling and diagnostics tool
icedtea-web.noarch : Additional Java components for OpenJDK - Java browser plug-in and Web Start implementation
[root@host2 ~]#  

注意:虽然我们可以使用 JRE 直接运行 Java 应用程序,但我们的应用程序每次执行时都必须进行编译,这往往比运行已编译的应用程序要慢。 如果我们计划多次执行应用程序,这将是不可取的。

如上所示,我们要安装的版本是:
java-11-openjdk-devel.x86_64 : OpenJDK 开发环境 11

要安装此版本,请运行以下命令。

[root@host2 ~]# dnf install java-11-openjdk-devel.x86_64
Last metadata expiration check: 0:09:28 ago on Fri Aug 21 15:19:11 2020.
Dependencies resolved.
========================================================================
 Package Architecture Version Repository Size
========================================================================
Installing:
 Java-11-openjdk-devel x86_64 1:11.0.8.10-0.el8_2 system-AppStream 3.4 M

Installing dependencies:
…
…
…
...
Enabling module streams:
 javapackages-runtime 201801

Transaction Summary
========================================================================
Install 63 Packages

Total download size: 68 M
Installed size: 246 M
Is this ok [y/N]:   
Downloading Packages:
(1/63): cups-libs-2.2.6-33.el8.x86_64.rpm 15 MB/s | 432 kB 00:00
(2/63): glib-networking-2.56.1-1.1.el8.x86_64.rpm 9.9 MB/s | 155 kB 00:00
(3/63): gdk-pixbuf2-2.36.12-5.el8.x86_64.rpm 8.9 MB/s | 467 kB 00:00
…
…
…
------------------------------------------------------------------------------------------------------------------------
Total 73 MB/s | 68 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: copy-jdk-configs-3.7-1.el8.noarch 1/1
  Running scriptlet: java-11-openjdk-headless-1:11.0.8.10-0.el8_2.x86_64 1/1
…
…
…
Verifying : tzdata-java-2020a-1.el8.noarch 61/63
Verifying : xorg-x11-font-utils-1:7.5-40.el8.x86_64 62/63
Verifying : xorg-x11-fonts-Type1-7.5-19.el8.noarch 63/63
Installed:
java-11-openjdk-1:11.0.8.10-0.el8_2.x86_64 java-11-openjdk-devel-1:11.0.8.10-0.el8_2.x86_64
java-11-openjdk-headless-1:11.0.8.10-0.el8_2.x86_64 javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch

Complete!
[root@host2 ~]#

验证安装

安装完成后,您可以通过运行以下命令来验证已安装的 Java 版本。

[root@host2 ~]# java -version
openjdk version "11.0.8" 2020-07-14 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.8+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode, sharing)
[root@host2 ~]# 

由于我们选择了完整安装 OpenJDK 开发工具包,因此我们也可以检查编译器版本。

[root@host2 ~]# javac -version
javac 11.0.8
[root@host2 ~]#

安装 OpenJDK 8

一些 Java 应用程序只能在 OpenJDK 8 上运行。如果是这种情况,我们需要安装 OpenJDK 8。我们可以使用以下命令安装 OpenJDK 8。

[root@host2 ~]# dnf install java-1.8.0-openjdk-devel.x86_64

验证安装

安装此版本的 Java 后,我们可以使用以下命令检查版本。

[root@host2 ~]# java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b09)
OpenJDK 64-Bit Server VM (build 25.242-b09, mixed mode)
[root@host2 ~]#

设置 Java 环境变量

现在,我们需要为新的 Java 安装设置环境变量。 这允许我们添加 JAVA_HOME 和 PATH 设置,这将确保我们的 Java 应用程序可以正常运行。

cat > /etc/profile.d/java11.sh <<EOF
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
EOF

接下来,我们将获取文件以开始使用它,而无需注销并重新登录。

[root@host2 ~]# source /etc/profile.d/java11.sh

要确认更改,请运行以下命令。

[root@host2 ~]# echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el8_2.x86_64

[root@host2 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64/bin:/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el8_2.x86_64/bin:/bin

如果在安装两个版本的 Java 之后偶然显示以下变量:

[root@host2 ~]# echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64

[root@host2 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64/bin

如果我们希望将 JAVA_HOME 和 PATH 变量改回 Java 11,请运行以下命令。

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el8_2.x86_64
export PATH=$PATH:$JRE_HOME/bin

我们还可以查看以下文件夹位置以查看所有 Java 安装的完整视图。

[root@host2 ~]# ll /usr/lib/jvm/
total 8
lrwxrwxrwx 1 root root 26 Aug 21 17:23 java -> /etc/alternatives/java_sdk
lrwxrwxrwx 1 root root 32 Aug 21 16:06 java-1.8.0 -> /etc/alternatives/java_sdk_1.8.0
lrwxrwxrwx 1 root root 40 Aug 21 16:06 java-1.8.0-openjdk -> /etc/alternatives/java_sdk_1.8.0_openjdk
drwxr-xr-x 7 root root 4096 Aug 21 16:06 java-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64
lrwxrwxrwx 1 root root 29 Aug 21 15:49 java-11 -> /etc/alternatives/java_sdk_11
lrwxrwxrwx 1 root root 37 Aug 21 15:49 java-11-openjdk -> /etc/alternatives/java_sdk_11_openjdk
drwxr-xr-x 7 root root 4096 Aug 21 15:49 java-11-openjdk-11.0.8.10-0.el8_2.x86_64
lrwxrwxrwx 1 root root 34 Aug 21 16:06 java-openjdk -> /etc/alternatives/java_sdk_openjdk
lrwxrwxrwx 1 root root 21 Aug 21 18:04 jre -> /etc/alternatives/jre
lrwxrwxrwx 1 root root 27 Aug 21 16:06 jre-1.8.0 -> /etc/alternatives/jre_1.8.0
lrwxrwxrwx 1 root root 35 Aug 21 16:06 jre-1.8.0-openjdk -> /etc/alternatives/jre_1.8.0_openjdk
lrwxrwxrwx 1 root root 51 Jul 16 11:10 jre-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64 -> java-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64/jre
lrwxrwxrwx 1 root root 24 Aug 21 15:49 jre-11 -> /etc/alternatives/jre_11
lrwxrwxrwx 1 root root 32 Aug 21 15:49 jre-11-openjdk -> /etc/alternatives/jre_11_openjdk
lrwxrwxrwx 1 root root 40 Jul 16 11:06 jre-11-openjdk-11.0.8.10-0.el8_2.x86_64 -> java-11-openjdk-11.0.8.10-0.el8_2.x86_64
lrwxrwxrwx 1 root root 29 Aug 21 16:06 jre-openjdk -> /etc/alternatives/jre_openjdk
[root@host2 ~]# 

更改 Java 版本

如果我们安装了多个版本的 Java,我们可以在需要时选择一个替代版本。 要更改版本,请运行以下命令。

[root@host2 ~]# alternatives --config java

There are 2 programs which provide 'java'.

  Selection Command
-----------------------------------------------
 + 1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el8_2.x86_64/bin/java)
* 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64/jre/bin/java)

Enter to keep the current selection[+], or type selection number: 1
[root@host2 ~]#   

在这种情况下,我们选择了数字 1,以保留 java-11-openjdk.x86_64 版本。

结论

我们以成为 Hosting™ 中最乐于助人的人而自豪!

我们才华横溢的支持团队由经验丰富的 Linux 技术人员和系统管理员组成,他们在网络托管技术(尤其是本文中讨论的技术)方面拥有多年经验。 一年 365 天,每周 7 天,每天 24 小时,我们随时可以帮助解决与本文相关的任何问题。

如果您是完全托管的 VPS 服务器, Cloud 专用,VMWare 私有 Cloud私人父母服务器或专用服务器所有者,并且您对执行概述的任何步骤感到不舒服,可以通过电话 @800.580.4985 联系我们, 聊天 或支持票以帮助您完成此过程。