如何在 Ubuntu 20.04 上用 Apt 安装 Java

介绍

Java和JVM(Java的虚拟机)需要许多类型的软件,包括 Tomcat, Jetty, Glassfish, CassandraJenkins

在本指南中,您将使用apt安装各种版本的Java Runtime Environment(JRE)和Java Developer Kit(JDK)。您将安装OpenJDK以及来自Oracle的官方JDK。

前提条件

要遵循本教程,您将需要:

安装默认 JRE/JDK

安装Java的最简单的选择是使用与Ubuntu组成的版本. 默认情况下,Ubuntu 20.04包含Open JDK 11,这是JRE和JDK的开源变体。

要安装此版本,请先更新包索引:

1sudo apt update

接下来,检查是否已经安装了Java:

1java -version

如果 Java 尚未安装,您将看到以下输出:

1[secondary_label Output]
2Command 'java' not found, but can be installed with:
3
4sudo apt install openjdk-11-jre-headless  # version 11.0.11+9-0ubuntu2~20.04, or
5sudo apt install default-jre              # version 2:1.11-72
6sudo apt install openjdk-13-jre-headless  # version 13.0.7+5-0ubuntu1~20.04
7sudo apt install openjdk-16-jre-headless  # version 16.0.1+9-1~20.04
8sudo apt install openjdk-8-jre-headless   # version 8u292-b10-0ubuntu1~20.04

运行以下命令来安装默认的Java Runtime Environment(JRE),它将从OpenJDK 11安装JRE:

1sudo apt install default-jre

JRE将允许您运行几乎所有Java软件。

检查安装与:

1java -version

您将看到类似于以下的输出:

1[secondary_label Output]
2openjdk version "11.0.11" 2021-04-20
3OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
4OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing))

除了 JRE 之外,您可能还需要 Java 开发套件 (JDK) 来编译和运行某些特定的基于 Java 的软件。

1sudo apt install default-jdk

通过检查 Java 编译器「javac」的版本来验证 JDK 是否已安装:

1javac -version

您将看到以下输出:

1[secondary_label Output]
2javac 11.0.11

接下来,让我们看看如何安装Oracle的官方JDK和JRE。

安装 Oracle JDK 11

Oracle 的 Java 许可协议不允许通过包管理器进行自动安装. 要安装 Oracle JDK,这是 Oracle 发布的官方版本,您必须创建 Oracle 帐户,并手动下载 JDK 以添加您想要使用的版本的新包库。

您需要下载的 Oracle JDK 的版本必须与安装程序脚本的版本匹配. 要查找您需要的版本,请访问 oracle-java11-installer页面。

查找 Focal 的包,如下图所示:

Installer package for Ubuntu 20.04

在此图像中,脚本的版本是 11.0.7. 在这种情况下,您需要 Oracle JDK 11.0.7。

您不需要从此页面下载任何东西;您将很快通过apt下载安装脚本。

然後前往 下載頁面並找到匹配您需要的版本。

Oracle Java 11

点击 JDK 下载 按钮,您将被带到显示可用的版本的屏幕上。

Linux download

您将看到一个屏幕,要求您接受 Oracle 许可协议。 选择验证框来接受许可协议,然后按下 Download 按钮。 您的下载将开始。

一旦下载了该文件,您将需要将其传输到您的服务器上。在本地计算机上,将该文件上传到您的服务器上。在 macOS、Linux 或 Windows 上使用 Windows 子系统 for Linux,使用scp命令将该文件传输到您的sammy用户的主目录。下列命令假定您已将 Oracle JDK 文件保存到本地计算机的下载文件夹:

1[environment local]
2scp Downloads/jdk-11.0.7_linux-x64_bin.tar.gz sammy@your_server_ip:~

完成文件上传后,返回您的服务器并添加第三方存储库,以帮助您安装Oracle的Java。

安装software-properties-common包,将add-apt-repository命令添加到您的系统:

1sudo apt install software-properties-common

接下来,导入用于验证你要安装的软件的签名密钥:

1sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EA8CACC073C3DB2A

你会看到这个输出:

1[secondary_label Output]
2gpg: key EA8CACC073C3DB2A: public key "Launchpad PPA for Linux Uprising" imported
3gpg: Total number processed: 1
4gpg:               imported: 1

然后使用add-apt-repository命令将 Repo 添加到您的包源列表中:

1sudo add-apt-repository ppa:linuxuprising/java

你会看到这个消息:

 1[secondary_label Output]
 2 Oracle Java 11 (LTS) and 16 installer for Ubuntu (21.04, 20.10, 20.04, 18.04, 16.04 and 14.04), Pop!_OS, Linux Mint and Debian.
 3
 4Java binaries are not hosted in this PPA due to licensing. The packages in this PPA download and install Oracle Java, so a working Internet connection is required.
 5
 6The packages in this PPA are based on the WebUpd8 Oracle Java PPA packages: https://launchpad.net/~webupd8team/+archive/ubuntu/java
 7
 8Created for users of https://www.linuxuprising.com/
 9
10Installation instructions (with some tips), feedback, suggestions, bug reports etc.:
11
12. . .
13
14Press [ENTER] to continue or Ctrl-c to cancel adding it.

您可能会看到一个消息没有找到有效的 OpenPGP 数据,但您可以安全地忽略这一点。

更新您的包列表以使新软件可供安装:

1sudo apt update

安装程序将搜索您下载的 Oracle JDK 在 /var/cache/oracle-jdk11-installer-local. 创建此目录并将 Oracle JDK 档案移动到那里:

1sudo mkdir -p /var/cache/oracle-jdk11-installer-local/
2sudo cp jdk-11.0.7_linux-x64_bin.tar.gz /var/cache/oracle-jdk11-installer-local/

最后,安装该包:

1sudo apt install oracle-java11-installer-local

安装程序将首先要求您接受 Oracle 许可协议. 接受协议,然后安装程序将提取 Java 包并安装它。

现在让我们看看如何选择您想要使用的Java版本。

Java 管理

您可以在一个服务器上进行多个Java安装,您可以使用更新替代命令来配置哪个版本是命令行上使用的默认版本。

1sudo update-alternatives --config java

如果您在本教程中安装了两个版本的Java,输出将是这样的:

 1[secondary_label Output]
 2There are 2 choices for the alternative java (providing /usr/bin/java).
 3
 4  Selection Path Priority Status
 5------------------------------------------------------------
 6  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
 7  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
 8* 2            /usr/lib/jvm/java-11-oracle/bin/java 1091 manual mode
 9
10Press <enter> to keep the current choice[*], or type selection number:

选择与 Java 版本相关的号码以作为默认使用,或按ENTER,留下当前设置。

对于其他Java命令,例如编译器(‘javac’)可以这样做:

1sudo update-alternatives --config javac

可以执行此命令的其他命令包括但不限于:‘keytool’,‘javadoc’和‘jarsigner’.

设置JAVA_HOME环境变量

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

要设置此环境变量,请先确定 Java 安装在何处。

1sudo update-alternatives --config java

这个命令显示了Java的每个安装以及其安装路径:

 1[secondary_label Output]
 2There are 2 choices for the alternative java (providing /usr/bin/java).
 3
 4  Selection Path Priority Status
 5------------------------------------------------------------
 6  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
 7  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
 8* 2            /usr/lib/jvm/java-11-oracle/bin/java 1091 manual mode
 9
10Press <enter> to keep the current choice[*], or type selection number:

在这种情况下,安装路径如下:

OpenJDK 11 位於 /usr/lib/jvm/java-11-openjdk-amd64/bin/java. 2. Oracle Java 位於 /usr/lib/jvm/java-11-oracle/jre/bin/java.

從您喜歡的安裝中複製路徑,然後使用「nano」或您最喜歡的文本編輯器開啟「/etc/environment」:

1sudo nano /etc/environment

在此文件的末尾,添加下列行,确保用你自己的复制路径取代突出路径,但不包括路径的bin/部分:

1[label /etc/environment]
2JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

修改此文件将为您的系统上的所有用户设置JAVA_HOME路径。

保存文件并离开编辑器。

现在重新加载此文件以将更改应用到当前会话中:

1source /etc/environment

检查环境变量是否已设置:

1echo $JAVA_HOME

你会看到你刚刚设置的路径:

1[secondary_label Output]
2/usr/lib/jvm/java-11-openjdk-amd64

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

结论

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

Published At
Categories with 技术
Tagged with
comments powered by Disqus