前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在Debian 9上使用Apt安装Java

如何在Debian 9上使用Apt安装Java

原创
作者头像
所有的酒都不如你
修改于 2018-11-05 09:52:19
修改于 2018-11-05 09:52:19
4.4K00
代码可运行
举报
运行总次数:0
代码可运行

介绍

Java和JVM(Java的虚拟机)是许多软件所必需的,包括TomcatJettyGlassfishCassandraJenkins

在本指南中,您将使用apt安装各种版本的Java Runtime Environment(JRE)和Java Developer Kit(JDK)。您将安装OpenJDK以及Oracle的官方软件包。然后,您将选择要用于项目的版本。完成后,您将能够使用JDK开发软件或使用Java Runtime运行软件。

准备

要学习本教程,您需要:

安装默认JRE / JDK

安装Java的最简单方法是使用Debian打包的版本。默认情况下,Debian 9包含Open JDK,它是JRE和JDK的开源变体。

该软件包将安装OpenJDK 1.8版,该版本与Java 8兼容.Java 8是当前的长期支持版本,并且仍然得到广泛支持,但公共维护在2019年1月结束。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt update

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java -version

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-bash: java: command not found

执行以下命令安装OpenJDK:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt install default-jre

此命令将安装Java运行时环境(JRE)。这将允许您运行几乎所有Java软件。

验证安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java -version

您将看到以下输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-1~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

除了JRE之外,您可能还需要Java Development Kit(JDK)才能编译和运行某些特定的基于Java的软件。要安装JDK,请执行以下命令,该命令还将安装JRE:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt install default-jdk

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
javac -version

您将看到以下输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
javac 1.8.0_181

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

安装Oracle JDK

如果要安装Oracle JDK(Oracle分发的正式版),则需要为要使用的版本添加新的软件包存储库。

首先,安装software-properties-common包,该包添加了您将用于将其他存储库添加到源列表的apt-get-repository命令。

使用以下命令安装software-properties-common

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt install software-properties-common

安装完成后,您可以安装Oracle的Java。

安装Oracle Java 8

要安装Java 8(当前的长期支持版本),首先要添加其软件包存储库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo add-apt-repository ppa:webupd8team/java

添加存储库时,您将看到如下消息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 Oracle Java (JDK) Installer (automatically downloads and installs Oracle JDK8). There are no actual Java files in this PPA.
​
Important -> Why Oracle Java 7 And 6 Installers No Longer Work: http://www.webupd8.org/2017/06/why-oracle-java-7-and-6-installers-no.html
​
Update: Oracle Java 9 has reached end of life: http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html
​
The PPA supports Ubuntu 18.04, 17.10, 16.04, 14.04 and 12.04.
​
More info (and Ubuntu installation instructions):
- for Oracle Java 8: http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html
​
Debian installation instructions:
- Oracle Java 8: http://www.webupd8.org/2014/03/how-to-install-oracle-java-8-in-debian.html
​
For Oracle Java 10, see a different PPA: https://www.linuxuprising.com/2018/04/install-oracle-java-10-in-ubuntu-or.html
 More info: https://launchpad.net/~webupd8team/+archive/ubuntu/java
Press [ENTER] to continue or ctrl-c to cancel adding it

ENTER继续。它将尝试导入一些GPG签名密钥,但它将无法找到任何有效的密钥:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gpg: keybox '/tmp/tmpgt9wdvth/pubring.gpg' created
gpg: /tmp/tmpgt9wdvth/trustdb.gpg: trustdb created
gpg: key C2518248EEA14886: public key "Launchpad VLC" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1
gpg: no valid OpenPGP data found.

执行以下命令以手动添加存储库源的GPG密钥:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C2518248EEA14886

然后更新您的包列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt update

包列表更新后,安装Java 8:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt install oracle-java8-installer

您的系统将从Oracle下载JDK并要求您接受许可协议。接受协议,JDK将安装。

安装Oracle Java 10

要安装Oracle Java 10,首先要添加其存储库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo add-apt-repository ppa:linuxuprising/java

你会看到这个消息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 Oracle Java 10 installer
​
Java binaries are not hosted in this PPA due to licensing. The packages in this PPA download and install Oracle Java 10 (JDK 10), so a working Internet connection is required.
​
The packages in this PPA are based on the WebUpd8 Oracle Java PPA packages: https://launchpad.net/~webupd8team/+archive/ubuntu/java
​
Created for users of https://www.linuxuprising.com/
​
Issues or suggestions? Leave a comment here: https://www.linuxuprising.com/2018/04/install-oracle-java-10-in-ubuntu-or.html
 More info: https://launchpad.net/~linuxuprising/+archive/ubuntu/java
Press [ENTER] to continue or ctrl-c to cancel adding it

ENTER继续安装。与Java 8一样,您将看到有关无效签名密钥的消息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Outputgpg: keybox '/tmp/tmpvuqsh9ui/pubring.gpg' created
gpg: /tmp/tmpvuqsh9ui/trustdb.gpg: trustdb created
gpg: key EA8CACC073C3DB2A: public key "Launchpad PPA for Linux Uprising" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: no valid OpenPGP data found.

执行此命令以导入必要的密钥:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EA8CACC073C3DB2A

然后更新您的包列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt update

包列表更新后,安装Java 10:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt install oracle-java10-installer

您的系统将从Oracle下载JDK并要求您接受许可协议。接受协议,JDK将安装。

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

管理Java

您可以在一台服务器上安装多个Java。您可以使用update-alternatives命令配置在命令行上使用的默认版本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo update-alternatives --config java

如果您在本教程中安装了所有版本的Java,那么这就是输出的样子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
There are 3 choices for the alternative java (providing /usr/bin/java).
​
  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-10-oracle/bin/java             1091      auto mode
* 1            /usr/lib/jvm/java-10-oracle/bin/java             1091      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
  3            /usr/lib/jvm/java-8-oracle/jre/bin/java          1081      manual mode
​
Press <enter> to keep the current choice[*], or type selection number:

选择与Java版本关联的编号以将其用作默认编号,或按ENTER以保留当前设置。

您可以对其他Java命令执行此操作,例如compiler(javac):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo update-alternatives --config javac

指此命令可以运行其它命令包括但不限于:keytooljavadocjarsigner

我们接下来设置JAVA_HOME环境变量。

设置JAVA_HOME环境变量

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

要设置此环境变量,请首先确定Java的安装位置。再次使用update-alternatives命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo update-alternatives --config java

此命令显示Java的每个安装及其安装路径:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-10-oracle/bin/java             1091      auto mode
* 1            /usr/lib/jvm/java-10-oracle/bin/java             1091      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
  3            /usr/lib/jvm/java-8-oracle/jre/bin/java          1081      manual mode

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

  • Oracle Java 10位于/usr/lib/jvm/java-10-oracle/jre/bin/java
  • Oracle Java 8位于/usr/lib/jvm/java-8-oracle/jre/bin/java
  • OpenJDK 8位于/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

这些路径显示了java可执行文件的路径。

复制首选安装的路径,不包括跟随bin/java组件。然后使用nano或您喜欢的文本编辑器打开/etc/environment

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo nano /etc/environment

在此文件的末尾,添加以下行,确保使用您自己复制的路径替换突出显示的路径:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre"

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

保存文件并退出编辑器。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
source /etc/environment

验证是否已设置环境变量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo $JAVA_HOME

您将看到刚刚设置的路径:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/lib/jvm/java-8-oracle/jre

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

结论

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

想要了解更多关于使用Apt安装Java的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How To Install Java with Apt on Debian 9》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
谷歌宣布支持使用Rust开发Chromium
谷歌计划在其开源浏览器项目 Chromium 中支持使用第三方 Rust 库,这是对 Rust 编程语言及其安全特性的一次重大认可。
深度学习与Python
2023/03/01
6700
谷歌宣布支持使用Rust开发Chromium
【2023 Week-2】Rust视界周刊 | Google 官宣在 Chromium 项目中支持使用 Rust
Rust 1.66.1 修复了 Cargo 在使用 SSH 克隆依赖项或注册表索引时不验证 SSH 主机密钥的问题。此安全漏洞被跟踪为 CVE-2022-46176[1]。所有包含 1.66.1 之前的 Cargo 的 Rust 版本都容易受到攻击。
张汉东
2023/03/06
1.6K0
【2023 Week-2】Rust视界周刊   | Google 官宣在 Chromium 项目中支持使用 Rust
谷歌“宠爱”升级,Rust 大步跨入 Android 平台
作者|褚杏娟、万佳、王强 “很高兴看到 Rust 在越来越多的项目中发挥作用。” 近日,谷歌宣布 Android 开源项目(AOSP)现已支持使用 Rust 编程语言来开发 OS。这一举动让正火的 Rust 语言热度再次上涨。 要用 Rust 解决什么问题? 目前,Android 项目主要用两种语言构建。Java(以及最近出现的与 jvm 兼容的语言,如 Kotlin) 已被用于操作系统的上层部分,如 UI 部分;在内核、驱动程序等 OS 的基础层面,则通常用 C 编写,有时也会使用 C++。 为了更适合
深度学习与Python
2023/04/01
1.8K0
谷歌“宠爱”升级,Rust 大步跨入 Android 平台
Android 平台基础支持转向 Rust(zdnet)
2021 年 4 月 7 日,zdnet 发布文章:Android 平台基础支持转向 Rust。2021 年 4 月 6 日,谷歌宣布,Rust 可以在 Android 开源项目内部使用。
niqin.com
2022/06/30
4790
Android 平台基础支持转向 Rust(zdnet)
【五万言】Rust 2022 生态版图调研报告(上)
去年我写了 2021 年 Rust 生态版图调研报告 | 星辰大海(上)[1] 和 (下)[2] ,大家能看到 Rust 在各个行业领域中开始暂露头角。2022 年,在政治动荡、经济下行和疫情肆虐的世界大环境下,Rust 却迎来了高质量的发展。2022 年,我愿称之为 Rust 发展元年。
张汉东
2023/03/06
1.2K0
【五万言】Rust 2022 生态版图调研报告(上)
Android 团队宣布 Android 开源项目(AOSP),已支持 Rust 语言来开发 Android 系统本身
Android 平台中,代码的正确性,是每个版本 Android 系统的安全性、稳定性,及其质量的重中之重。C/C++ 语言中的内存安全漏洞,仍然是最难解决的错误来源。我们投入了大量的精力和资源来检测、修复和缓解这类 bug,这些努力有效地防止了大量 bug 进入 Android 系统。然而,尽管做出了这些努力,内存安全漏洞仍然是稳定性问题的主要原因。并且,在 Android 系统高严重性的安全漏洞中,其始终占据大约 70% 的比例。
niqin.com
2022/06/30
1.8K0
Android 团队宣布 Android 开源项目(AOSP),已支持 Rust 语言来开发 Android 系统本身
抛弃 C / C++!微软官宣:请用 Rust 编写 Windows 驱动!
在这众多大厂之中,微软对于 Rust 的重视与支持力度也一直未减。继 5 月效仿 Linux 用 Rust 重写部分 Windows 内核后,近来微软在拥抱 Rust 上又进了一步:微软在 GitHub 中发布了一系列开发工具包,让开发者可以使用 Rust 语言来编写 Windows 驱动程序。
C语言与CPP编程
2023/10/09
7200
抛弃 C / C++!微软官宣:请用 Rust 编写 Windows 驱动!
RUST 编程语言使构建更安全的软件变得更加容易。RUST ALL THE THINGS 需要什么?
给各位分享一篇关于GitHub上的rust风格的开发人员如何可以使开发更加安全的博客,我已经帮大家翻译了
人不走空
2024/05/11
1210
RUST 编程语言使构建更安全的软件变得更加容易。RUST ALL THE THINGS 需要什么?
「快讯」Android 加入了对 Rust 语言的支持
Android 平台中代码的正确性是每一个 Android 版本安全性、稳定性和质量的重中之重。C 和 C++ 中的内存安全漏洞仍然是最难解决的不正确性原因。我们投入了大量的人力和物力来检测、修复和缓解这类 bug,这些努力有效 ¢¢ 地防止了大量的 bug 混入 Android 发行版中。然而,尽管做出了这些努力,内存安全漏洞仍然是造成稳定性问题的首要因素,并且一直占到 Android 高严重性安全漏洞的 70% 左右。
用户1250838
2021/05/31
9590
「快讯」Android 加入了对 Rust 语言的支持
呼吁停用 C/C++,微软 Azure CTO 更青睐 Rust
9 月 20 日,微软 Azure 现任 CTO、Sysinternals 主要开发者 Mark Russinovich 在其个人推特账号发表动态称是时候停止使用 C/C++启动任何新项目,并建议在需要使用 noc-GC 语言的场景下使用 Rust 编程语言。 Rust 由 Graydon Hoare 设计,而后在 Mozilla 成型,Rust 设计时借鉴了许多 C++ 的设计思想如并发特性等,也以高性能著称,还实现了内存安全。2015 年 Rust 作为 C/C++ 的替代品开始引起人们的关注,正因如此
IT大咖说
2022/09/27
7330
呼吁停用 C/C++,微软 Azure CTO 更青睐 Rust
Rust 语言风靡学术界
AWS 将 Rust 编译器团队负责人收入麾下的新闻让开发者们再次聚焦于这门兼具安全性与高性能的编程语言。近日,著名科学期刊 Nature 刊登了一篇文章,表明 Rust 语言也正在成为学术界最受欢迎的编程语言之一。
章鱼猫先生
2021/10/15
6040
Rust 语言风靡学术界
Mozilla将会在Firefox 48版本中引入Rust Component
Mozilla近日宣布,将会在Firefox的正式版中首次引入Rust代码。而该版本(Firefox 48)将于在2016年8月2日发布。 Rust是一种可以更为安全地替代C++的编程语言,因为其独特架构架构,能降低基于Rust的应用中内存泄漏的风险。 内存泄漏问题(例如释放后重利用、缓存溢出等)是最近安全漏洞的根源。不止是Adobe Flash Player,Firefox和Chrome等浏览器也深受其害。 因为自身特性的需要,七年前Mozilla决定赞助这个项目,并最终将其作为自己的编程语言。 Fire
CSDN技术头条
2018/02/12
8540
造就 Rust 的无名英雄
看到社区有朋友对 Brain 这篇文章已经做了翻译,但是出于对 Rust 发展背后付出的无名英雄的敬意,我又认真翻译了一遍。这篇翻译得到了 Brian 本人的授权。
张汉东
2021/05/11
7070
造就 Rust 的无名英雄
什么是Rust语言?探索安全系统编程的未来
在本篇博客中,我们将全面深入探讨Rust语言——一种革命性的系统编程语言,旨在提供内存安全、并发性支持和高性能操作。通过详尽的历史背景、发展史、技术意义及其解决的核心问题分析,本文将带您详细了解Rust语言的优势和应用场景。文章特别适合编程新手和资深开发者阅读,涵盖了丰富的代码示例和操作命令,助您从理论到实践全方位掌握Rust。关键词包括:Rust编程、系统编程、内存安全、并发编程、Rust历史和发展、Rust应用实例。
猫头虎
2024/04/20
6870
【Rust日报】2022-02-12 Amazon:Rust的可持续性
Rust 是一种作为开源项目实现的编程语言。它结合了 C 等系统编程语言的性能和资源效率与 Java 等语言的内存安全性。Rust 于 2010 年作为 Mozilla 的一个研究项目开始,Rust 1.0 于 2015 年推出。2020 年,对 Rust 的支持从 Mozilla 转移到 Rust 基金会,这是一个由 Amazon Web Services, Inc (AWS) 、谷歌、华为、微软和 Mozilla 合作创建的非营利组织。基金会的使命是支持 Rust 的成长和创新,成员公司从创始的 5 家公司发展到第一年的 27 家公司。
MikeLoveRust
2022/03/24
2970
Facebook 是如何引入并使用 Rust 的?
Facebook 正在拥抱当今最受欢迎 、发展最快的一门编程语言——Rust。当前,Facebook 除了为公司内部的 Rust 团队引进人才,还正式加入了 Rust 基金会,与 Mozilla(Rust 的创造者)、AWS、微软和谷歌等其他成员一起,致力于维持和发展 Rust 的开源生态系统。
MikeLoveRust
2021/07/16
8120
Facebook 是如何引入并使用 Rust 的?
C和C++不安全?谷歌宣布Android加入对Rust语言支持
机器之心报道 机器之心编辑部 Rust 越来越流行,开始跨入 Android 领域。谷歌宣布 AOSP (Android Open Source Project) 现已支持使用 Rust 开发 Android 操作系统。 Android 系统涉及很多组件,开发者会根据正在开发的 Android 部分而选择不同的编程语言。对于应用开发者来说,Java 和 Kotlin 是比较流行的选择;而对于从事操作系统以及内部底层的开发人员来说,C 和 C++ 是比较好的选择。 近日,谷歌为操作系统开发者增加了第 3 个
机器之心
2023/03/29
6270
C和C++不安全?谷歌宣布Android加入对Rust语言支持
Docker 之父:Go、Rust 为什么会成为云原生的主导语言?
作者 | Justin Cormack 译者 | 核子可乐 审校 | 褚杏娟 Docker 公司 CTO Justin Cormack 在 InfoQ 的会议上与 Docker 公司创始人、Docker 之父 Solomon Hykes、Vitess 联合创始人 Sougoumarane 、Krustlet 主要作者 Matt Butcher 等人一起探讨了等各大云原生项目在最开始为何选择了 Go 和 Rust 语言,并对云原生项目如何选择编程语言提出了几点建议。我们将本次大咖们的对话进行了编译
深度学习与Python
2023/03/29
7310
Docker 之父:Go、Rust 为什么会成为云原生的主导语言?
Android 支持 Rust 编程语言,以避免内存缺陷(thehackernews)
谷歌周二(2021-04-06)宣布,其开源版本的 Android 操作系统,将增加对 Rust 编程语言的支持,以防止内存安全漏洞。
niqin.com
2022/06/30
1.5K0
Android 支持 Rust 编程语言,以避免内存缺陷(thehackernews)
Linux 基金会要接管 Chromium 了吗?
纵观浏览器的发展历程,有三个重要节点。第一个节点是网景公司成立,发布第一款商用浏览器 Netscape Navigator,拉开互联网走向大众的序幕。第二个节点是微软 IE 击败 Netscape Navigator,成为浏览器的新霸主,然后不思进取,拖慢了 Web 发展的进程。第三个节点是谷歌 Chrome 浏览器崛起,甚至微软也不得不屈服,放弃自家的浏览器引擎,基于 Chromium,开发新一代浏览器 Edge。
云水木石
2025/01/23
460
Linux 基金会要接管 Chromium 了吗?
推荐阅读
相关推荐
谷歌宣布支持使用Rust开发Chromium
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档