如何在 Debian 9 上安装 Java

2023-10-18

在本教程中,我们将逐步介绍在 Debian 9 上安装 Java。Java 是用于构建不同类型的应用程序和系统的最流行的编程语言之一。用 Java 开发的应用程序具有可扩展性、灵活性和可维护性。

有两种不同的 Java 包:Java 运行时环境 (JRE) 和 Java 开发工具包 (JDK)。如果你只想运行Java程序,那么你需要JRE,如果你是Java开发人员,那么你将需要JDK,其中包括JRE和开发/调试工具和库。

Java 还有两种不同的实现:OpenJDK 和 Oracle Java,它们之间几乎没有区别,只是 Oracle Java 有一些额外的商业功能。

如果您不确定要使用哪个 Java 实现和版本,一般建议是坚持使用 Debian 9 上提供的默认 OpenJDK 版本。

先决条件#

在继续本教程之前,请确保您以以下身份登录具有 sudo 权限的用户 .

安装 OpenJDK 8#

OpenJDK 8 是 Java 平台的开源实现,是 Debian 9 中默认的 Java 开发和运行时。安装简单明了。

使用以下命令从标准 Debian 存储库安装 OpenJDK 8 JDK:

sudo apt updatesudo apt install default-jdk

安装完成后,可以通过检查Java版本来验证:

java -version

输出应如下所示:

openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b01-1~deb9u1-b01)
OpenJDK 64-Bit Server VM (build 25.212-b01, mixed mode)

就是这样!此时,您应该已经在 Debian 系统上成功安装了 Java。

JRE包含在JDK包中。如果您只需要 JRE,请安装default-jre包裹:

安装 OpenJDK 11#

在撰写本文时,Java 的最新 LTS 版本是版本 11。该版本可从 Debian Backports 存储库获取。

首先,将 Backports 添加到系统的软件存储库列表中:

echo 'deb http://ftp.debian.org/debian stretch-backports main' | sudo tee /etc/apt/sources.list.d/stretch-backports.list

启用存储库后,使用以下命令更新 apt 源并安装 Java 11:

sudo apt updatesudo apt install openjdk-11-jdk

安装 Oracle Java#

在安装 Oracle Java 之前,请确保您阅读了Oracle JDK 许可证。该许可证仅允许软件的非商业使用,例如个人使用和开发使用。

Oracle Java 11 可以从以下位置安装Linux起义 PPA.

以下步骤描述了如何在 Debian 9 上安装 Oracle Java 11:

  1. 首先安装必要的软件包:

    sudo apt install dirmngr gnupg
  2. 使用以下命令导入 PPA 公钥并启用存储库:

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 73C3DB2Aecho 'deb http://ppa.launchpad.net/linuxuprising/java/ubuntu bionic main' | sudo tee /etc/apt/sources.list.d/linuxuprising-java.list
  3. 添加存储库后,更新软件包列表并安装oracle-java11-installer通过键入以下内容进行打包:

    sudo apt updatesudo apt install oracle-java11-installer

    系统将提示您接受 Oracle 许可证。

  4. 通过运行以下命令来验证安装,该命令将打印 R 版本:

    java -version
    java version "11.0.2" 2019-01-15 LTS
    Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
    Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)

设置默认版本#

如果您的 Debian 计算机上安装了多个 Java 版本,请检查哪个版本被设置为默认 Java 版本类型:

java -version

输出应如下所示:

openjdk version "11.0.3" 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+1-Debian-1bpo91)
OpenJDK 64-Bit Server VM (build 11.0.3+1-Debian-1bpo91, mixed mode, sharing)

要更改默认版本,请使用update-alternatives系统命令:

sudo update-alternatives --config java
There 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-8-openjdk-amd64/jre/bin/java   1081      manual mode

Press <enter> to keep the current choice[*], or type selection number: 

您将看到 Debian 系统上所有已安装 Java 版本的列表。输入您想要用作默认版本的版本号,然后按Enter.

卸载Java#

如果出于任何原因您想要卸载 Java 软件包,您可以像使用安装的任何其他软件包一样卸载它apt.

例如,如果您想卸载default-jdk包只需运行:

sudo apt remove default-jdk

结论#

现在您已经了解了如何在 Debian 服务器上安装和管理不同的 Java 版本,下一步可能是安装在 Java 上运行的众多应用程序之一,例如Tomcat , JBoss/WildFly , 阿帕奇Maven, 玻璃鱼,弹性搜索 , 卡桑德拉 , Jenkins , etc.

如果您有任何疑问,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Debian 9 上安装 Java 的相关文章

  • 按下按钮并在java中的新窗口中打开文件

    我创建了一个 JFrame 并放置了一个文本字段和按钮 在文本字段中我放置了从文本文件读取的名称 我知道我想单击按钮并打开一个已知窗口 我想在其中放置名称 其他信息来自同一个文件 这是我的代码 这是我的主框架 package Fronten
  • 带路径压缩算法的加权 Quick-Union

    有一种 带路径压缩的加权快速联合 算法 代码 public class WeightedQU private int id private int iz public WeightedQU int N id new int N iz new
  • java中监视目录变化

    我正在使用 WatchService 来监视目录中的更改 特别是目录中新文件的创建 下面是我的代码 package watcher import java nio file import static java nio file Stand
  • 如何在由子控件组成的 SWT 复合材料上跟踪鼠标?

    我创建了自己的控件 我想跟踪鼠标并添加一个MouseTrackListener 很遗憾MouseEnter and MouseLeave当鼠标移动到我的合成部分 即标签和按钮 上时 也会生成事件 Mouse enter mouse ente
  • Thymeleaf 3 Spring 5 映射加载字符串而不是 HTML

    我正在尝试将 Spring 5 和 Thymeleaf 3 一起配置 我正在 Eclipse 上工作 我使用 全新安装 构建并使用 springboot run 运行应用程序 我已经设置了一个控制器和几个模板 但 Thymeleaf 似乎找
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • Mockito 使用 @Mock 时将 Null 值注入到 Spring bean 中?

    由于我是 Spring Test MVC 的新手 我不明白这个问题 我从以下代码中获取了http markchensblog blogspot in search label Spring http markchensblog blogsp
  • 如何在单个查询中搜索 RealmObject 的 RealmList 字段

    假设我有一堂课 public class Company extends RealmObject private String companyId private RealmList
  • 断言 Kafka 发送有效

    我正在使用 Spring Boot 编写一个应用程序 因此要写信给 Kafka 我这样做 Autowired private KafkaTemplate
  • 如何在 Spring 中使 @PropertyResource 优先于任何其他 application.properties ?

    我正在尝试在类路径之外添加外部配置属性资源 它应该覆盖任何现有的属性 但以下方法不起作用 SpringBootApplication PropertySource d app properties public class MyClass
  • Android 无法解析日期异常

    当尝试解析发送到我的 Android 客户端的日期字符串时 我得到一个无法解析的日期 这是例外 java text ParseException 无法解析的日期 2018 09 18T00 00 00Z 位于 偏移量 19 在 java t
  • 将人类日期(当地时间 GMT)转​​换为日期

    我正在服务器上工作 服务器正在向我发送 GMT 本地日期的日期 例如Fri Jun 22 09 29 29 NPT 2018在字符串格式上 我将其转换为日期 如下所示 SimpleDateFormat simpleDateFormat ne
  • 如何在 ant 中为 junit 测试设置 file.encoding?

    我还没有完全完成file encoding 和 ant https stackoverflow com questions 1339352 how do i set dfile encoding within ants build xml
  • Akka 与现有 java 项目集成的示例

    如果我已经有现有的javaWeb 应用程序使用spring and servlet容器 将 Akka 集成到其中的正确方法是什么 就像我将会有Actor1 and Actor2互相沟通的 开始使用这些演员的切入点是什么 例如 1 把它放在那
  • 如何在JPanel中设置背景图片

    你好 我使用 JPanel 作为我的框架的容器 然后我真的想在我的面板中使用背景图片 我真的需要帮助 这是我到目前为止的代码 这是更新 请检查这里是我的代码 import java awt import javax swing import
  • 使用 Elastic Beanstalk 进行 Logback

    我在使用 Elastic Beanstalk 记录应用程序日志时遇到问题 我正在 AWS Elastic Beanstalk 上的 Tomcat 8 5 with Corretto 11 running on 64bit Amazon Li
  • 在 Java 中获取并存储子进程的输出

    我正在做一些需要我开始子处理 命令提示符 并在其上执行一些命令的事情 我需要从子进程获取输出并将其存储在文件或字符串中 这是我到目前为止所做的 但它不起作用 public static void main String args try R
  • Spring @Cacheable 和 @Async 注解

    我需要缓存一些异步计算的结果 具体来说 为了克服这个问题 我尝试使用 Spring 4 3 缓存和异步计算功能 作为示例 我们采用以下代码 Service class AsyncService Async Cacheable users C
  • Android View Canvas onDraw 未执行

    我目前正在开发一个自定义视图 它在画布上绘制一些图块 这些图块是从多个文件加载的 并将在需要时加载 它们将由 AsyncTask 加载 如果它们已经加载 它们只会被绘制在画布上 这工作正常 如果加载了这些图片 AsyncTask 就会触发v
  • 由 Servlet 容器提供服务的 WebSocket

    上周我研究了 WebSockets 并对如何使用 Java Servlet API 实现服务器端进行了一些思考 我没有花费太多时间 但在使用 Tomcat 进行一些测试时遇到了以下问题 如果不修补容器或至少对 HttpServletResp

随机推荐

  • 使用 Python Pandas read_csv 读取 CSV

    在本教程中 我们将重点关注read csv函数 它允许我们读取 CSV 文件并将其转换为Pandas数据框 The read csvfunction 不仅仅是一个 CSV 文件加载工具 它配备了大量参数来处理 CSV 文件中可能出现的各种情
  • 如何在 MongoDB 中创建管理员用户

    在大规模的软件工程中 我们在每一步的实现中都会遇到问题 然而 最大的挑战仍然是找出问题的根本原因并解决它们 在本文中 我们将学习如何使用 MongoDB 实现用户身份验证 并在用户不再是组织的员工时删除 MongoDB 中的用户 Mongo
  • 测试主机标头注入漏洞

    在不断发展的 Web 安全领域 主机标头注入是可能困扰 Web 应用程序的漏洞之一 当 Web 应用程序或服务器未正确验证或限制传入 HTTP 请求中的主机标头时 就会出现此缺陷 从而使其遭受恶意利用 无论您是开发人员 安全专业人士还是好奇
  • 理解 Python 的下划线 (_):综合指南

    Python 作为一种灵活且直观的语言 引入了许多可以简化编码的结构 下划线就是这样的一种结构 一个具有多种用途的特殊字符 范围从变量命名到解释器目的等等 对于新手程序员来说 下划线可能会让人感到困惑 但理解它们的用途可以显着提高你的 Py
  • Python – 如何创建嵌套目录结构

    The pathlib模块提供了表示文件系统路径的类 其语义适用于不同的操作系统 我们可以创建嵌套目录结构路径库 Path mkdirPython 中的函数 On Linux from pathlib import Path Path di
  • 如何在 Debian 11/10 上安装 Apache Solr 9.0

    阿帕奇 索尔是一个用Java编写的开源搜索平台 Solr 提供全文搜索 拼写建议 自定义文档排序和排名 片段生成和突出显示 本教程将帮助您在 Debian 11 Debian 10 Buster Debian 9 Stretch 和 Deb
  • Linux 中的 Wget 命令及示例(下载文件)

    The wgetLinux 中的命令是从互联网下载文件的强大工具 它允许您从 URL 下载文件并将其保存到本地文件系统 该命令行实用程序可用于下载单个文件 整个目录甚至整个网站 无论您需要下载文件进行备份 还是在系统之间传输大文件 wget
  • 如何从 Ubuntu Linux 中删除(删除)PPA

    如果您已经使用 Ubuntu 一段时间 您可能熟悉术语 PPA 它代表个人软件包存档 PPA 是安装和更新官方 Ubuntu 存储库中未提供的软件的好方法 但是 有时您可能想要删除 PPA 因为不再需要它或因为它导致问题 在本文中 我们将完
  • 20 个常见的 JavaScript 面试问题和答案

    JavaScript 是世界上最流行的编程语言之一 因此 这也是技术面试中最常被问到的话题之一 无论您是初学者还是经验丰富的开发人员 为 JavaScript 面试问题做好充分准备都很重要 在本文中 我们将讨论 20 个常见的 JavaSc
  • 如何在 Ubuntu 15.10、14.04 和 12.04 上安装 RabbitVCS

    兔子VCS是版本管理系统 SVN 和 Git 的图形客户端 它提供了一个简单且易于使用的图形用户界面 可以说 RabbitVCS 是 TortoiseSVN 的最佳 Linux 替代品 本教程将帮助您在 Ubuntu 15 10 14 04
  • 如何更改 Linux 内核中的 Swappiness 值

    Swappiness 是一个 Linux 内核参数 用于控制交换空闲进程和使用可用 RAM 内存之间的平衡 大多数Linux发行版中的默认交换值是60 这意味着当可用内存低于40 时系统开始交换进程 但是 此默认值可能并不适合所有情况 更改
  • Linux 中的 du 命令及有用示例

    du 是缺少磁盘使用 这意味着 du 命令计算文件在磁盘上使用的大小 它是Linux系统用户经常使用的基本Linux命令 Syntax du OPTION FILE 在本教程中 您将通过有用的示例了解 du 命令在 Linux 中的用法 d
  • 如何在 PHP 中向数组追加项目

    问题 如何在 PHP 中向数组追加项目 如何在 PHP 中将任何元素追加到现有数组的末尾 如何在 PHP 中将元素推送到数组 本教程使用数组推 函数将新元素插入或追加到数组末尾 PHP 将元素追加到数组 以下示例创建一个包含两个元素 如 b
  • 如何在 Ubuntu 18.04 上安装 Yarn

    Yarn 是一个与 npm 兼容的 JavaScript 包管理器 可帮助您自动执行安装 更新 配置和删除 npm 包的过程 它的创建是为了解决 npm 的一系列问题 例如通过并行操作加快软件包安装过程并减少与网络连接相关的错误 在本教程中
  • 如何在 CentOS 7 上安装 Python 3

    本教程将指导您使用 Software Collections SCL 以及发行版默认 Python 版本 2 7 在 CentOS 7 系统上安装 Python 3 我们还将向您展示如何创建 Python 虚拟环境 Python 是世界上最
  • 如何在 Debian 10 Linux 上安装 Vagrant

    Vagrant是一个用于构建和管理虚拟机环境的开源命令行工具 默认情况下 Vagrant 可以在 VirtualBox Hyper V 之上配置计算机 和码头工人 其他提供商如 Libvirt KVM VMware 和 AWS 可以通过 V
  • Linux 中的 Wget 命令及示例

    GNU Wget 是一个用于从网络下载文件的命令行实用程序 使用 Wget 您可以使用 HTTP HTTPS 和 FTP 协议下载文件 Wget 提供了许多选项 允许您下载多个文件 恢复下载 限制带宽 递归下载 后台下载 镜像网站等等 本文
  • 如何在 Ubuntu 20.04 上安装 Odoo 15

    Odoo 是一款流行的开源商业应用程序套件 可帮助公司管理和运营其业务 它包括广泛的应用程序 例如 CRM 电子商务 网站构建器 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 Odoo根据使用案例和可用技术 可以以不同的方
  • 如何在 Debian 10 Linux 上安装 Node.js 和 npm

    Node js 是一个基于 Chrome JavaScript 构建的跨平台 JavaScript 运行时环境 旨在在服务器端执行 JavaScript 代码 使用 Node js 您可以构建可扩展的网络应用程序 npm 是 Node js
  • 如何在 Debian 9 上安装 Java

    在本教程中 我们将逐步介绍在 Debian 9 上安装 Java Java 是用于构建不同类型的应用程序和系统的最流行的编程语言之一 用 Java 开发的应用程序具有可扩展性 灵活性和可维护性 有两种不同的 Java 包 Java 运行时环