如何在Ubuntu 22.04上使用Apt安装Java
引言
Java和JVM(Java虚拟机)是许多软件所必需的,包括Tomcat、Jetty、Glassfish、Cassandra和Jenkins。
在本指南中,您将使用apt安装各种版本的Java运行时环境(JRE)和Java开发工具包(JDK)。您将安装OpenJDK以及来自Oracle的官方JDK。然后,您将选择要为项目使用的版本。完成后,您将能够使用JDK来开发软件或使用Java运行时来运行软件。
Info
前提条件
要按照本教程操作,你需要准备以下材料:
- One Ubuntu 22.04 server set up by following the the Ubuntu 22.04 initial server setup guide tutorial, including a sudo non-root user and a firewall.
步骤1-安装Java
Java的安装包含两个主要组件。JDK提供了开发Java所需的基本软件工具,如编译器和调试器。JRE用于实际执行Java程序。此外,Java有两个主要的安装选项可供选择。OpenJDK是Java的开源实现版本,并随Ubuntu捆绑提供。Oracle JDK是Java的原始版本,由Java的开发者Oracle全面维护。
这两个版本都是由Oracle官方认可的。它们都是由Oracle开发的,但是由于OpenJDK具有开源特性,它还添加了社区贡献。然而,从Java 11开始,根据Oracle的详细介绍,这两个选择在功能上是完全相同的。选择安装哪个版本取决于选择适用于您情况的许可证。此外,OpenJDK还可以选择单独安装JRE,而OracleJDK则随附其自己的JRE。
选项1:安装默认的JRE/JDK。
在安装Java时的一个选项是使用Ubuntu自带的版本。默认情况下,Ubuntu 22.04包含了Open JDK 11,这是JRE和JDK的开源变种。
要安装OpenJDK版本的Java,请先更新您的apt软件包索引。
- sudo apt update
接下来,检查是否已经安装了Java。
- java -version
如果当前未安装Java,您将得到以下输出:
OutputCommand 'java' not found, but can be installed with:
sudo apt install default-jre # version 2:1.11-72build1, or
sudo apt install openjdk-11-jre-headless # version 11.0.14+9-0ubuntu2
sudo apt install openjdk-17-jre-headless # version 17.0.2+8-1
sudo apt install openjdk-18-jre-headless # version 18~36ea-1
sudo apt install openjdk-8-jre-headless # version 8u312-b07-0ubuntu1
执行以下命令来安装OpenJDK 11中的JRE:
- sudo apt install default-jre
JRE 将允许您运行几乎所有的 Java 软件。
使用以下方式验证安装:
- java -version
您将收到类似以下的输出:
Outputopenjdk version "11.0.14" 2022-01-18
OpenJDK Runtime Environment (build 11.0.14+9-Ubuntu-0ubuntu2)
OpenJDK 64-Bit Server VM (build 11.0.14+9-Ubuntu-0ubuntu2, mixed mode, sharing)
为了编译和运行某些特定的基于Java的软件,除了JRE,您可能还需要JDK。要安装JDK,请执行以下命令,它也会同时安装JRE:
- sudo apt install default-jdk
通过检查javac的版本(即Java编译器)来验证JDK是否已安装。
- javac -version
你会看到以下输出结果:
Outputjavac 11.0.14
接下来,你将学习如何安装Oracle官方的JDK和JRE。
第二个选项 – 安装Oracle JDK 11
Oracle的Java授权协议不允许通过软件包管理器自动安装。要安装Oracle JDK(由Oracle官方分发的官方版本),您必须创建一个Oracle账号并手动下载要使用的版本的JDK,并添加一个新的软件包存储库。然后,您可以使用apt来借助第三方安装脚本来安装它。Oracle JDK已经包含了JRE,所以您不需要单独安装它。
您需要下载的Oracle JDK版本必须与安装程序脚本的版本相匹配。要了解您需要的版本,请访问oracle-java11-installer页面。
请在以下图示中找到 Jammy 的包裹。
在此图像中,脚本的版本是11.0.13。在这种情况下,您需要使用Oracle JDK 11.0.13。您的版本号可能会根据安装软件的时间而有所不同。
你不需要从这个页面下载任何内容;你会很快通过apt下载安装脚本。
接下来,访问存档下载,找到与您所需的版本相匹配的那一个。
从这个列表中选择 Linux x64 压缩归档 .tar.gz 包。
你将会看到一个屏幕要求你接受Oracle的许可协议。选择复选框以接受许可协议并点击下载按钮。下载将会开始。在下载开始之前,你可能需要再次登录你的Oracle账户。
一旦文件下载完毕,你需要将其传输到你的服务器上。在你的本地设备上,将文件上传到服务器上。在 macOS、Linux 或使用 Windows 子系统的 Windows 上,使用 scp 命令将文件传输到 user01 用户的家目录中。下面的命令假设你已经将 Oracle JDK 文件保存在本地设备的 Downloads 文件夹中。
- scp Downloads/jdk-11.0.13_linux-x64_bin.tar.gz user01@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。请创建此目录并将Oracle JDK档案移动到该目录中。
- sudo mkdir -p /var/cache/oracle-jdk11-installer-local/
- 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。
步骤三 — 配置JAVA_HOME环境变量
许多使用Java编写的程序使用JAVA_HOME环境变量来确定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:
在这种情况下,安装路径如下:
- OpenJDK 11 位于 /usr/lib/jvm/java-11-openjdk-amd64/bin/java。
Oracle Java 位于 /usr/lib/jvm/java-11-oracle/jre/bin/java。
复制您首选安装的路径。然后使用nano或您喜欢的文本编辑器打开/etc/environment。
- sudo nano /etc/environment
在该文件的末尾添加以下行,请确保将高亮路径替换为您自己复制的路径,并且不包括路径中的bin/部分。
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
修改此文件将为您系统上的所有用户设置JAVA_HOME路径。
保存文件并退出编辑器。
现在重新加载该文件,以应用更改到您当前的会话中。
- source /etc/environment
验证环境变量是否已设置:
- echo $JAVA_HOME
你会看到你刚刚设定的路径。 (Nǐ huì kàn dào nǐ gānggāng shèdìng de lùjìng.)
Output/usr/lib/jvm/java-11-openjdk-amd64
其他用户需要执行命令source /etc/environment或者退出并重新登录以应用此设置。
结论
在这个教程中,你安装了多个版本的Java并学会了如何管理它们。现在你可以安装在Java上运行的软件,比如Tomcat,Jetty,Glassfish,Cassandra或Jenkins。