在Debian 9上使用Apt安装Java的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
介绍
Java 和 JVM(Java 虚拟机)是许多软件的必备组件,包括 Tomcat、Jetty、Glassfish、Cassandra 和 Jenkins。
在本指南中,您将使用 apt
安装各种版本的 Java 运行环境(JRE)和 Java 开发工具包(JDK)。您将安装 OpenJDK 以及来自 Oracle 的官方软件包。然后,您将选择要在项目中使用的版本。完成后,您将能够使用 JDK 开发软件或使用 Java 运行时来运行软件。
先决条件
要按照本教程操作,您需要:
- 通过遵循 Debian 9 初始服务器设置指南教程设置的一个 Debian 9 服务器,包括一个具有
sudo
访问权限和防火墙的非根用户。
安装默认的 JRE/JDK
安装 Java 的最简单选项是使用 Debian 打包的版本。默认情况下,Debian 9 包含 OpenJDK,这是 JRE 和 JDK 的开源变体。
此软件包将安装兼容 Java 8 的 OpenJDK 版本 1.8。Java 8 是当前的长期支持版本,尽管公共维护将于 2019 年 1 月结束,但仍得到广泛支持。
要安装此版本,首先更新软件包索引:
sudo apt update
接下来,检查 Java 是否已安装:
java -version
如果 Java 尚未安装,您将看到以下输出:
-bash: java: command not found
执行以下命令以安装 OpenJDK:
sudo apt install default-jre
此命令将安装 Java 运行环境(JRE)。这将允许您运行几乎所有的 Java 软件。
使用以下命令验证安装:
java -version
您将看到以下输出:
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)
您可能需要 Java 开发工具包(JDK)以及 JRE,以便编译和运行一些特定的基于 Java 的软件。要安装 JDK,请执行以下命令,该命令还将安装 JRE:
sudo apt install default-jdk
通过检查 Java 编译器 javac
的版本来验证 JDK 是否已安装:
javac -version
您将看到以下输出:
javac 1.8.0_181
接下来,让我们看看如何安装 Oracle 的官方 JDK 和 JRE。
安装 Oracle JDK
如果您想安装由 Oracle 分发的官方版本 Oracle JDK,您需要为您想要使用的版本添加一个新的软件包存储库。
首先,安装 software-properties-common
软件包,该软件包添加了 apt-get-repository
命令,您将使用该命令将额外的存储库添加到您的源列表中。
使用以下命令安装 software-properties-common
:
sudo apt install software-properties-common
安装了此软件包后,您可以安装 Oracle 的 Java。
安装 Oracle Java 8
要安装 Java 8,即当前的长期支持版本,首先添加其软件包存储库:
sudo add-apt-repository ppa:webupd8team/java
当您添加存储库时,您将看到如下消息:
[secondary_label output]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.htmlUpdate: Oracle Java 9 has reached end of life: http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.htmlThe 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.htmlDebian installation instructions:
- Oracle Java 8: http://www.webupd8.org/2014/03/how-to-install-oracle-java-8-in-debian.htmlFor Oracle Java 10, see a different PPA: https://www.linuxuprising.com/2018/04/install-oracle-java-10-in-ubuntu-or.htmlMore info: https://launchpad.net/~webupd8team/+archive/ubuntu/java
Press [ENTER] to continue or ctrl-c to cancel adding it
按下 ENTER
继续。它将尝试导入一些 GPG 签名密钥,但它将无法找到任何有效的密钥:
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 密钥:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C2518248EEA14886
然后更新您的软件包列表:
sudo apt update
软件包列表更新后,安装 Java 8:
sudo apt install oracle-java8-installer
您的系统将从 Oracle 下载 JDK,并要求您接受许可协议。接受协议后,JDK 将安装。
安装 Oracle Java 10
要安装 Oracle Java 10,首先添加其软件源:
sudo add-apt-repository ppa:linuxuprising/java
你会看到以下消息:
Oracle Java 10 安装程序由于许可问题,Java 二进制文件不托管在此 PPA 中。该 PPA 中的软件包会下载并安装 Oracle Java 10(JDK 10),因此需要一个可用的互联网连接。此 PPA 中的软件包基于 WebUpd8 Oracle Java PPA 软件包:https://launchpad.net/~webupd8team/+archive/ubuntu/java为 https://www.linuxuprising.com/ 的用户创建问题或建议?在此处留下评论:https://www.linuxuprising.com/2018/04/install-oracle-java-10-in-ubuntu-or.html更多信息:https://launchpad.net/~linuxuprising/+archive/ubuntu/java
按 [ENTER] 继续或按 ctrl-c 取消添加
按下 ENTER
键继续安装。与 Java 8 一样,你会看到关于无效签名密钥的消息:
gpg: 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.
执行以下命令导入必要的密钥:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EA8CACC073C3DB2A
然后更新软件包列表:
sudo apt update
软件包列表更新后,安装 Java 10:
sudo apt install oracle-java10-installer
系统将从 Oracle 下载 JDK,并要求你接受许可协议。接受协议后,JDK 将安装。
现在让我们看看如何选择要使用的 Java 版本。
管理 Java
你可以在一个服务器上安装多个 Java 版本。你可以使用 update-alternatives
命令配置命令行上的默认版本。
sudo update-alternatives --config java
如果你在本教程中安装了所有 Java 版本,输出将如下所示:
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 mode2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode3 /usr/lib/jvm/java-8-oracle/jre/bin/java 1081 manual modePress <enter> to keep the current choice[*], or type selection number:
选择与要使用的 Java 版本相关联的数字,以将其用作默认版本,或按 ENTER
保留当前设置。
你还可以对其他 Java 命令执行此命令,例如编译器(javac
):
sudo update-alternatives --config javac
可以对其他命令运行此命令,例如 keytool
、javadoc
和 jarsigner
。
接下来让我们设置 JAVA_HOME
环境变量。
设置 JAVA_HOME
环境变量
许多使用 Java 编写的程序使用 JAVA_HOME
环境变量来确定 Java 安装位置。
要设置此环境变量,首先确定 Java 安装位置。再次使用 update-alternatives
命令:
sudo update-alternatives --config java
此命令显示每个 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 mode2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode3 /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
:
sudo nano /etc/environment
在文件末尾添加以下行,确保用你自己复制的路径替换高亮显示的路径:
JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre"
修改此文件将为系统上的所有用户设置 JAVA_HOME
路径。
保存文件并退出编辑器。
现在重新加载此文件以将更改应用于当前会话:
source /etc/environment
验证环境变量是否已设置:
echo $JAVA_HOME
你将看到你刚刚设置的路径:
/usr/lib/jvm/java-8-oracle/jre
其他用户需要执行命令 source /etc/environment
或注销并重新登录以应用此设置。
结论
在本教程中,您安装了多个版本的Java,并学会了如何管理它们。现在,您可以安装在Java上运行的软件,比如Tomcat、Jetty、Glassfish、Cassandra或Jenkins。
相关文章:
在Debian 9上使用Apt安装Java的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 介绍 Java 和 JVM(Java 虚拟机)是许多软件的必备组件,包括 Tomcat、Jetty、Glassfish、Cassandra 和…...

人工智能在网络安全中的三大支柱
人工智能 (AI) 席卷了网络安全行业,各种供应商都在努力将 AI 融入其解决方案中。但 AI 与安全之间的关系不仅仅在于实现 AI 功能,还在于攻击者和防御者如何利用该技术改变现代威胁形势。它还涉及如何开发、更新和保护这些 AI 模型。如今,网络…...
rk3568mpp终端学习笔记
RK3568Terminal封装MppGraph 通过脚本取和设置音量/zigsun/bin/linux/bin.debug.Linux.rk3568/get_record_voice_value.sh /zigsun/bin/linux/bin.debug.Linux.rk3568/set_record_voice_value.sh class RK3568Terminal : public IAVLinkManager, p…...

【C++继承】赋值兼容转换作用域派生类的默认成员函数
1.继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类(或子类)。继承呈现了面向对象程序设计的层次结构…...

HTML5+JavaScript绘制彩虹和云朵
HTML5JavaScript绘制彩虹和云朵 彩虹,简称虹,是气象中的一种光学现象,当太阳光照射到半空中的水滴,光线被折射及反射,在天空上形成拱形的七彩光谱,由外圈至内圈呈红、橙、黄、绿、蓝、靛、紫七种颜色。事实…...
MySQL——单表查询(二)按条件查询(2)带 IN 关键字的查询
IN 关键字用于判断某个字段的值是否在指定集合中,如果字段的值在集合中,则满足条件,该字段所在的记录将被查询出来。其语法格式如下所示: SELECT *|字段名 1,字段名 2,… FROM 表名 WHERE 字段名 [NOT〕IN(元素 1,元素 2,…) 在上…...
【mysql】mysql 用户管理---创建、权限管理等等
本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…...

本地服务器物理机中redis设置、取消密码
1.服务器物理机上redis的操作【服务器中操作】 (1)首先先看一下当前运行中的redis实例: [rootiZuf67k70ucx14s6zcv54dZ var]# ps aux | grep redis-server因为我这里有两个实例在运行,即物理机上的redis和docker中的redis&…...

关于xilinx的FFTIP的使用和仿真
工具:vivado2018.3,modelsim10.6d 场景:在进行数据进行频谱分析的时候,使用FPGA来完成FFT的计算可以加快数据的计算速度。 下面使用仿真完成DDS产生的数据的FFT以及IFFT。原始数据使用DDSIP产生,通过IP产生的波形数据…...

ant design pro 如何去保存颜色
上图 就是实现这样的效果 后端是这样的,这个颜色肯定是存到字符串里的 这是第一步 import mongoose, { Schema, Document } from mongoose;interface IDiscountCard extends Document {title: string;subtitle: string;image: string;shopUrl: string;bgColor: s…...

【Hadoop】建立圈内组件的宏观认识
01存储02计算03调度04其他05回忆 众多组件们构建了大规模分布式计算和存储平台。本文介绍Hadoop生态圈中各个组件的主要功能和作用,辅助学者理解每个组件的定位和用途,从而建立对圈内组件的宏观认识。梳理清楚HDFS、MapReduce、YARN、Hive、HBase、Spark…...

C++:命名空间与输入输出
目录 前言 一、命名空间 1.1 namespace的价值 1.2 namespace的定义 1.3 命名空间的使用 二、C输入&输出 前言 C是一种面向对象的计算机程序设计语言,它扩展了C语言的功能,并引入了面向对象编程的概念,如类、继承和多态等&a…...

Azure DevOps Server 数据库日志已满,TF30042: The database is full
Contents 1. 问题描述2. 处理方式 2.1 系统备份2.2 收缩日志2.3 恢复模式2.4 日志增长无法控制 1. 问题描述 Azure DevOps Server 作为微软的软件开发管理平台产品,理所当然地使用了微软的数据库软件SQL Server。 在一个大型的开发团队中,Azure DevOps S…...
[C#]OpenCvSharp 实现Bitmap和Mat的格式相互转换
//转为 bitmap方法一: Bitmap map OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat); process_pictureBox.Image map; //转为 bitmap方法二: Bitmap map new Bitmap(mat.ToMemoryStream()); process_pictureBox.Image map; //Image img 转为…...
【区块链+金融服务】基于区块链的供应链金融系统 | FISCO BCOS应用案例
传统供应链金融存在着信息不对称、信任问题和繁琐流程等弊端。为了解决这些问题,京北方搭建了基于区块链 的供应链金融系统,提供了更高效、透明、安全和可信的交易环境。 系 统 采 用 FISCO BCOS 为 底 层 链, 技 术 栈 使 用 Java 语 言 进…...

AI语言大模型商业价值深度解析
点击蓝字 关注我 随着人工智能(AI)技术的飞速发展,特别是深度学习算法的进步,AI语言大模型在自然语言处理领域的表现日益突出。国内外多种语言大模型如:OpenAi 的 ChatGpt,阿里通义千问,百度文心…...
理解DDD领域驱动设计思想
一、引言 在软件开发的广袤领域中,领域驱动设计(Domain-Driven Design,简称 DDD)犹如一颗璀璨的明星,备受瞩目。对于期望运用 DDD 开展项目的研发人员而言,明晰 DDD 的本质是实现其有效应用的基石。需注意…...

音频剪辑软件哪个好用?五大音频剪辑软件分享
如果你正打算在家自学视频制作,那么恭喜你,你已经踏上了一段充满魔法与惊喜的旅程!不过,别忘了,视频的灵魂不仅仅在于画面,更在于那直击心灵的音效。 想象一下,一个精心剪辑的片段,…...

12.2 使用prometheus-sdk向pushgateway打点
本节重点介绍 : 使用golang sdk打prometheus4种指标,推送到pushgateway gauge、counter、histogram、summary的初始化4种类似的设置值的方法推送到pushgateway的方法 prometheus配置采集pushgateway,grafana上配大盘 golang-sdk 项目地址 https://git…...
HTTPS 详解
HTTPS 是以安全为目标的 HTTP 通道,它在 HTTP 中加入 SSL 层以提高数据传输的安全性。HTTP 被用于在 Web 浏览器和网站服务器之间传递信息,但以明文形式发送内容,不提供任何方式的数据加密,如果攻击者截取了 Web 浏览器和网站服务…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...

c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...