介绍
Java 和 JVM (Java 虚拟机) 需要用于许多类型的软件,包括 Tomcat, Jetty, Glassfish, Cassandra和 Jenkins。
在本指南中,您将使用 Debian 的apt
包管理系统安装 Java Runtime Environment (JRE) 和 Java Developer Kit (JDK) 的不同版本。
您将安装OpenJDK 11以及来自Oracle的官方Java 11软件,然后选择您想为您的项目使用的版本,完成后,您将能够使用JDK开发软件或使用Java Runtime运行软件。
前提条件
要开始这个教程,你需要:
- 一個 Debian 10 伺服器,具有非根、「sudo」功能的使用者. 您可以按照我們的 Debian 10 初始伺服器安裝指南來設定此功能。
安装默认 JRE/JDK
安装Java的最简单的选择是使用与Debian包装的版本。 默认情况下,Debian 10包含OpenJDK版本 11,这是JRE和JDK的开源变体,并且与Java 11兼容。
Java 11是Java的长期支持版本。
要安装Java的OpenJDK版本,先更新您的apt
包索引:
1sudo apt update
接下来,检查是否已经安装了Java:
1java -version
如果 Java 尚未安装,您将看到以下输出:
1[secondary_label Output]
2-bash: java: command not found
然后使用apt install
命令来安装OpenJDK:
1sudo apt install default-jre
这将安装Java Runtime Environment(JRE),允许您运行几乎所有Java软件。
检查安装与:
1java -version
您将看到以下输出:
1[secondary_label Output]
2openjdk version "11.0.4" 2019-07-16
3OpenJDK Runtime Environment (build 11.0.4+11-post-Debian-1deb10u1)
4OpenJDK 64-Bit Server VM (build 11.0.4+11-post-Debian-1deb10u1, mixed mode, sharing)
您可能还需要 Java 开发套件(JDK)来编译和运行某些特定的基于 Java 的软件。
1sudo apt install default-jdk
通过检查 Java 编译器「javac」的版本来验证 JDK 是否已安装:
1javac -version
您将看到以下输出:
1[secondary_label Output]
2javac 11.0.4
接下来,让我们看看如何安装Oracle的官方JDK和JRE。
安装 Oracle JDK
要安装官方的 Oracle JDK,我们需要直接从 Oracle 下载一些文件,然后使用我们从第三方存储库中获取的安装程序来安装它们。
首先,让我们从Oracle的网站下载Java。
Oracle Java SE 软件包的下载
由于 Oracle 处理 Java 许可的方式最近发生了变化,您需要创建 Oracle 帐户并从其网站直接下载软件,然后继续安装。
如果您还没有 Oracle 帐户,请在 Oracle 帐户创建页面创建一个帐户。
然后,导航到 Oracle的Java SE下载页面:
我们需要确保我们正在下载正确的Java版本,因为它需要匹配安装程序的期望,我们可以通过访问安装程序的软件存储库的 包列表来检查安装程序需要的版本。
我们将在下一步下载此存储库的安装程序,但暂时请寻找oracle-java11-installer-local...
文件:
在这种情况下,我们可以看到安装程序正在等待版本 11.0.4. 忽略在包版本号(在上面的示例屏幕截图中)中的-
字符串后出现的任何数字。
现在我们知道正确的版本号码,滚动到Java下载页面,直到你找到正确的版本:
点击下载按钮,你将被带到最后一个屏幕:
选择 接受许可协议 广播按钮,然后点击 Linux 的 .tar.gz
包,下载将开始。
在下载完成后,我们需要将下载的文件送到我们的服务器上,我们将使用scp
命令来做到这一点,但您可以使用您舒适的任何文件传输软件。
在本地计算机上,使用scp
将文件上传到您的服务器上。下面的命令假定您的文件已下载到用户主文件夹中的下载
目录,并将其上传到服务器上的sammy
目录。
1[environment local]
2scp ~/Downloads/jdk-11.0.4_linux-x64_bin.tar.gz sammy@your_server_ip:~
现在我们已经在我们的服务器上获得了正确的Java软件包,让我们添加包含我们将使用的Java安装程序的Repo。
添加安装程序的 Apt 存储库
首先,安装software-properties-common
包,将add-apt-repository
命令添加到您的系统:
1sudo apt install software-properties-common
接下来,导入用于验证我们即将安装的软件的签名密钥:
1sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EA8CACC073C3DB2A
然后,我们使用add-apt-repository
命令将repo添加到我们的包源列表中:
1sudo add-apt-repository ppa:linuxuprising/java
你会看到这个消息:
1[secondary_label Output]
2 Oracle Java 11 (LTS) and 12 installer for Ubuntu, 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 11, 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
按「ENTER」來繼續安裝,您可能會看到「未找到有效 OpenPGP 資料」的訊息。
最后,更新您的包列表以使新软件可供安装:
1sudo apt update
接下来,我们将使用我们刚刚提供的新软件安装Java包。
安装下载的Java软件
首先,我们需要创建一个特定目录,安装程序使用它来查找Java软件包,然后将.tar.gz 文件复制到:
1sudo mkdir -p /var/cache/oracle-jdk11-installer-local/
2sudo cp ~/jdk-11.0.4_linux-x64_bin.tar.gz /var/cache/oracle-jdk11-installer-local/
一旦文件副本完成,请通过安装oracle-java11-installer-local
包来安装Oracle的Java 11:
1sudo apt install oracle-java11-installer-local
安装程序将首先要求您接受 Oracle 许可协议. 接受协议,然后安装程序将提取 Java 包并安装它。
现在我们已经安装了多个版本的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_HOME
环境变量
许多用Java编写的程序使用JAVA_HOME
环境变量来确定使用哪个Java安装位置。
要设置此环境变量,请先确定 Java 安装在何处。
1sudo update-alternatives --config java
这个命令显示了Java的每个安装以及其安装路径:
1[secondary_label Output]
2 Selection Path Priority Status
3------------------------------------------------------------
4 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
5 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
6* 2 /usr/lib/jvm/java-11-oracle/bin/java 1091 manual mode
在这种情况下,安装路径如下:
- Oracle Java 11 位於
/usr/lib/jvm/java-11-oracle/bin/java
. - OpenJDK 11 位於
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
.
这些路径显示了通往java
可执行的路径。
复制您喜欢的安装路径,不包括后续的bin/java
组件,然后使用nano
或您最喜欢的文本编辑器打开/etc/environment
:
1sudo nano /etc/environment
此檔案可能最初是空的. 在檔案的結尾,添加下列行,確保您用自己的複製路徑取代突出路徑:
1[label /etc/environment]
2JAVA_HOME="/usr/lib/jvm/java-11-oracle/"
修改此文件将为您的系统上的所有用户设置JAVA_HOME
路径。
保存文件并离开编辑器。
现在重新加载此文件以将更改应用到当前会话中:
1source /etc/environment
检查环境变量是否已设置:
1echo $JAVA_HOME
你会看到你刚刚设置的路径:
1[secondary_label Output]
2/usr/lib/jvm/java-11-oracle/
其他用户需要执行命令 source /etc/environment
或退出并重新登录以应用此设置。
结论
在本教程中,您安装了多个版本的Java,并学会了如何管理它们,现在您可以安装运行在Java上的软件,如Tomcat,Jetty,Glassfish,Cassandra或Jenkins。