中国十大网站建设/品牌营销策略四种类型
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
介绍
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 浏览器和网站服务…...

Microsoft Edge 使用方法与秘诀概览
目录 编辑引言 Microsoft Edge 功能与技巧概览 掌握这些设置技巧,让 Edge 浏览器的体验更干净 1. 使用阅读视图 2. 开启广告过滤 3. 管理扩展 4. 个性化新标签页 5. 使用网页截图 6. 清理浏览器缓存 7. 管理启动设置 8. 自定义地址栏建议 9. 使用内置笔…...

【视频】onvif、RTP、RTCP、SDP、RTSP、gb21818区别
ONVIF (Open Network Video Interface Forum): ONVIF是一个全球性的开放网络视频接口论坛,致力于发展基于IP网络的物联网设备的标准化。它提供了一个通用的标准接口,使不同厂商生产的网络视频产品能够互相兼容。 RTP (Real-time Transport Protocol): R…...

8-4 循环神经网络
对于 (8.4.2)中的函数 f f f,隐变量模型不是近似值。 毕竟 h t h_{t} ht是可以仅仅存储到目前为止观察到的所有数据, 然而这样的操作可能会使计算和存储的代价都变得昂贵。 回想一下,我们在前面讨论过的具有隐藏单元的隐藏层。 值得注意的…...

Linux系统编程 --- 多线程
线程:是进程内的一个执行分支,线程的执行粒度,要比进程要细。 一、线程的概念 1、Linux中线程该如何理解 地址空间就是进程的资源窗口。 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是࿱…...

Grafana中的rate与irate以及histogram
用法 rate rate函数用于计算一个时间序列在给定时间范围内的平均速率。它对每个数据点进行线性插值来计算速率,因此对于平滑和稳定的数据来说,rate是一个不错的选择。语法如下: rate(metric_name[time_range])metric_name: 指标名称。time…...

什么是网络安全态势感知
态势感知是一种基于环境的、动态、整体地洞悉安全风险的能力,是以安全大数据为基础,从全局视角提升对安全威胁的发现识别、理解分析、响应处置能力的一种方式、最终是为了决策与行动,是安全能力的落地 态势感知的重要性 随着网络与信息技术的…...

php 在app中唤起微信app进行支付,并处理回调通知
<?phpnamespace app\api\controller;use think\facade\Db; use think\facade\Log;class Wxzf {...

高效同步与处理:ADTF流服务在自动驾驶数采中的应用
目录 一、ADTF 流服务 1、流服务源(Streaming Source) 2、流服务汇(Streaming Sink) 二、数据链路 1、数据管道(Data Pipe) 2、子流(Substreams) 3、触发管道(Tri…...

【Arduino】ATmega328PB 连接 LSM6DS3 姿态传感器,并读数据(不确定 ESP 系列是否可行,但大概率是可行的)
总览 1.初始化 ATmega328PB,默认大家已经完成了 328 的配置准备工作,已经直接能够向里面写入程序 2.接线,然后验证 mega328 的 I2C 设备接口能否扫描到 LSM6DS3 3.编写代码,上传,查看串口数据。完成。 一、初始化 AT…...

live2d + edge-tts 优雅的实现数字人讲话 ~
震惊!live2d数字人竟开口说话 ~ 之前有想做数字人相关项目,查了一些方案。看了一些三方大厂的商用方案,口型有点尴尬,而且很多是采用视频流的方案,对流量的消耗很大。后来了解了live2d 技术,常在博客网页上…...