当前位置: 首页 > news >正文

麒麟系统—— openKylin 安装 java

麒麟系统—— openKylin 安装 java JDK

  • 一、准备工作
    • 1. 确保麒麟系统 openKylin 已经安装完毕。
    • 2. 了解 java JDK 的版本信息,以便下载合适的安装包。
  • 二、安装 java JDK
    • 3. 将下载好的 java JDK 安装包解压到指定目录。
    • 4. 配置环境
    • 5. 验证安装结果


本文将分享如何在麒麟系统 openKylin 上安装 java JDK。麒麟系统是国产操作系统,而 java JDK 是 java 编程语言的运行环境。安装 java JDK 可以让用户在麒麟系统上运行 java 程序。

一、准备工作

1. 确保麒麟系统 openKylin 已经安装完毕。

我这里使用的鸿蒙系统是 :openKylin-2.0-alpha-x86_64

在这里插入图片描述

2. 了解 java JDK 的版本信息,以便下载合适的安装包。

安装包:jdk-8u301-linux-x64.tar.gz
通过下面的地址,去下载java 的安装包

https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html

由于我这里习惯使用这个版本,所以我就直接检索:jdk-8u301-linux

在这里插入图片描述

在这里插入图片描述
下载文件有两种方法,第一种是下载到系统里,再发到服务器,openKylin上,第二种是直接在麒麟系统下载。由于我这边已经安装了SSH工具,(我这边使用的是FinalShell,所以我是在windows系统下载,发过去的。包括下面我都会用SSH工具来作为截图演示,有不懂的可以私信,一起交流学习。)

mkdir /home/app
cd /home/app
ls

在这里插入图片描述
在这里插入图片描述

我这里是将文件下载到 /home/app 目录下面,所以就进入这个目录
然后再 输入命令 : ls ,就可以看到我们的 java 安装文件了

二、安装 java JDK

3. 将下载好的 java JDK 安装包解压到指定目录。

tar -zxvf /home/app/jdk-8u301-linux-x64.tar.gz
mkdir -p /usr/local/java
mv jdk1.8.0_301/ /usr/local/java/
chown -R root:root /usr/local/java/

以下是每一步操作的解释:

  1. tar -zxvf /home/app/jdk-8u301-linux-x64.tar.gz
    • tar 是用来解压档案文件的命令。
    • -z 表示解压时需要用到gzip。
    • -x 表示解压文件。
    • -v 表示在解压时显示过程信息,可以看到正在被解压的文件名(verbose模式)。
    • -f 表示接下来的是要处理的档案文件名。
    • /home/app/jdk-8u301-linux-x64.tar.gz 是下载的Java JDK安装包的文件路径和名称。
      这个命令的作用是在当前目录解压/home/app/目录下的jdk-8u301-linux-x64.tar.gz文件。
  2. mkdir -p /usr/local/java
    • mkdir 是创建目录的命令。
    • -p 选项表示创建必要的上级目录。
    • /usr/local/java 是将要创建的目录的路径。
      这个命令的作用是在/usr/local/目录下创建一个名为java的新目录。
  3. mv jdk1.8.0_301/ /usr/local/java/
    • mv 是移动文件或目录的命令。
    • jdk1.8.0_301/ 是解压后JDK的目录名。
    • /usr/local/java/ 是JDK将被移动到的目标路径。
      这个命令的作用是将解压后的JDK目录jdk1.8.0_301/移动到/usr/local/java/目录下。
  4. chown -R root:root /usr/local/java/
    • chown 是改变文件或目录所有者的命令。
    • -R 选项表示递归地改变所有子目录和文件的所有者。
    • root:root 表示新的所有者是root用户,并且组也是root。
    • /usr/local/java/ 是将要改变所有者权限的目录路径。
      这个命令的作用是将/usr/local/java/目录及其所有子目录和文件的所有者和组都设置为root。

连起来就是:解压安装包,创建安装目录,移动解压后的JDK目录,设置目录的权限和所有者。
在这里插入图片描述

4. 配置环境

输入命令 sudo vim /etc/environment 并按回车键。

sudo vim /etc/environment

输入下面配置:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
export JAVA_HOME=/usr/local/java/jdk1.8.0_301
export JRE_HOME=/usr/local/java/jdk1.8.0_301/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

下面是每一行代码的解释:

  1. PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
    • 这行定义了PATH环境变量,它告诉操作系统在执行命令时应该搜索哪些目录来查找可执行文件。PATH变量中的每个目录都是用冒号分隔的,表示搜索的顺序。这个配置确保了在用户运行Java应用程序时,系统能够找到Java解释器(java命令)以及其他可能在游戏或本地安装的程序。
  2. export JAVA_HOME=/usr/local/java/jdk1.8.0_301
    • 这行代码定义了JAVA_HOME环境变量,它指向Java开发工具包(JDK)的安装目录。JAVA_HOME变量通常用于指定Java的安装位置,以便于其他应用程序和脚本知道到哪里去查找Java库和其他资源。
  3. export JRE_HOME=/usr/local/java/jdk1.8.0_301/jre
    • 这行代码定义了JRE_HOME环境变量,它指向Java运行时环境(JRE)的安装目录。JRE是Java平台的核心组件,用于运行Java应用程序。JRE_HOME变量通常用于指定JRE的位置。
  4. export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    • 这行代码定义了CLASSPATH环境变量,它告诉Java解释器在哪里查找Java类文件。CLASSPATH变量用于指定Java应用程序运行时需要加载的类文件的位置。这行代码将当前的CLASSPATH值与JAVA_HOME目录下的libjre/lib目录添加到一起,确保Java应用程序能够找到它所依赖的类库。
      在这里插入图片描述
      按 ESC 键
      使用大写 ZZ 保存退出

输入命令 sudo vim /etc/profile 并按回车键。

sudo vim /etc/profile

在中间加入配置:

export JAVA_HOME=/usr/local/java/jdk1.8.0_301
export JRE_HOME=/usr/local/java/jdk1.8.0_301/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/
  1. export JAVA_HOME=/usr/local/java/jdk1.8.0_301
    • 这行代码定义了JAVA_HOME环境变量,它指向安装了Java Development Kit (JDK) 的目录。JDK是用于Java开发的工具包,包括编译器、运行时环境和其他工具。在这个例子中,JAVA_HOME被设置为/usr/local/java/jdk1.8.0_301,这意味着如果你想在命令行中运行Java编译器(如javac)或者执行Java程序(如java),你需要在路径中包含这个目录。
  2. export JRE_HOME=/usr/local/java/jdk1.8.0_301/jre
    • 这行代码定义了JRE_HOME环境变量,它指向Java Runtime Environment (JRE) 的安装目录。JRE是用于运行Java应用程序的运行时环境。在这个例子中,JRE_HOME被设置为与JAVA_HOME相同的目录下的jre子目录。这样,你就可以在命令行中运行Java应用程序了。
  3. export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    • 这行代码定义了CLASSPATH环境变量,它告诉Java运行时在哪里查找Java类文件。CLASSPATH是一个字符串,包含了目录和/或文件的位置,Java虚拟机(JVM)使用它来查找类文件。这行代码将当前的CLASSPATH值与JAVA_HOME目录下的libjre/lib目录添加到一起,确保Java应用程序能够找到它所依赖的类库。
  4. export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/
    • 这行代码定义了PATH环境变量,它是一个目录列表,操作系统在执行命令时会搜索这些目录来查找可执行文件。这行代码将JAVA_HOME目录下的binjre/bin目录添加到PATH中,这样你就可以直接在命令行中运行Java相关的命令(如javajavac等)。此外,它还将在用户的主目录($HOME/)中搜索可执行文件。这样,你就可以在命令行中直接运行安装在JAVA_HOME中的Java应用程序了。

在这里插入图片描述

输入 source /etc/profile 让配置生效

source /etc/profile

在这里插入图片描述

5. 验证安装结果

java -version

在这里插入图片描述

相关文章:

麒麟系统—— openKylin 安装 java

麒麟系统—— openKylin 安装 java JDK 一、准备工作1. 确保麒麟系统 openKylin 已经安装完毕。2. 了解 java JDK 的版本信息,以便下载合适的安装包。 二、安装 java JDK3. 将下载好的 java JDK 安装包解压到指定目录。4. 配置环境5. 验证安装结果 本文将分享如何在…...

HTML学习笔记——07:其他嵌入技术

除了将图像、视频和音频嵌入到网页上&#xff0c;还能让你在网页中嵌入各种内容类型的元素&#xff1a;<iframe>, <embed> 和 <object> 元素。 <iframe>用于嵌入其他网页&#xff0c;另外两个元素则允许你嵌入 PDF&#xff0c;SVG&#xff0c;甚至 Fl…...

【UE】在控件蓝图中通过时间轴控制材质参数变化

效果 步骤 1. 新建一个控件蓝图和一个材质 2. 打开材质&#xff0c;设置材质域为用户界面&#xff0c;混合模式设置为“半透明” 在材质图表中添加两个参数来控制材质的颜色和不透明度 3. 对材质创建材质实例 4. 打开控件蓝图&#xff0c;在画布面板中添加一个图像控件 将刚…...

linux C语言socket函数send

在Linux中&#xff0c;使用C语言进行网络编程时&#xff0c;send函数是用于发送数据到已连接的套接字的重要函数之一。它通常用于TCP连接&#xff0c;但也可以用于UDP&#xff08;尽管对于UDP&#xff0c;通常更推荐使用sendto&#xff0c;因为它允许你指定目标地址和端口&…...

Django(八)

1. 管理员操作 1.1 添加 from django.shortcuts import render, redirectfrom app01 import models from app01.utils.pagination import Paginationfrom django import forms from django.core.exceptions import ValidationError from app01.utils.bootstrap import BootStr…...

上海计算机学会12月月赛 丙组题解

上海计算机学会 12 月月赛 丙组题解涉及知识点&#xff1a;数学、字符串、模拟、裴蜀定理、宽度优先搜索、动态规划 比赛链接&#xff1a;https://iai.sh.cn/contest/58 第一题&#xff1a;T1数砖数 标签&#xff1a;数学题意&#xff1a;给定一种 2 2 2x 2 2 2的瓷砖&#…...

nextjs中beforePopState使用

在某些情况下&#xff0c;希望监听popstate并在路由器对其进行操作之前执行某些操作。可以使用beforePopState。 在Next.js中&#xff0c;beforePopState是一个可选的生命周期函数&#xff0c;用于在浏览器的历史记录发生更改之前执行一些操作。具体来说&#xff0c;beforePopS…...

【并发编程】活锁

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程 ⛺️稳重求进&#xff0c;晒太阳 活锁 定义&#xff1a;活锁出现在两个线程互相改变对象的结束条件&#xff0c;最后谁也无法结束 代码示例 public class TestLiveLock {stati…...

CSMM和CMMI之间有什么区别?

CSMM&#xff08;软件能力成熟度评估&#xff09;和CMMI&#xff08;能力成熟度模型集成&#xff09;都是软件行业中用于评估和提高企业软件开发过程成熟度的模型。它们之间的主要区别在于起源、定位、适应范围和具体内容。 1. 起源与定位&#xff1a; - CMMI是由美国卡耐基…...

企业面临的典型网络安全风险及其防范策略

网络安全威胁是一种技术风险&#xff0c;会削弱企业网络的防御能力&#xff0c;危及专有数据、关键应用程序和整个IT基础设施。由于企业面临着广泛的威胁&#xff0c;因此通过监控和缓解最关键的威胁和漏洞。网络安全问题有七大类&#xff0c;包括多种威胁&#xff0c;以及团队…...

JavaScript进阶:WebAPIs重点知识整理1

目录 1 DOM修改元素内容 2 DOM修改元素常见属性 3 修改元素样式属性 3.1 通过style修改元素样式 3.2 通过类名className修改元素样式 3.3 通过classList修改元素样式 4 操作表单元素属性 5 自定义属性 6 定时器 7 事件监听 7.1 点击事件 click 7.2 鼠mouseenter和移…...

【Nginx】使用自生成证书配置nginx代理https

使用Nginx代理HTTPS请求并使用自签名证书&#xff0c;可以按照以下步骤进行配置&#xff1a; 生成自签名证书&#xff1a; 打开终端或命令提示符&#xff0c;并导航到Nginx配置文件所在的目录。运行以下命令生成自签名证书和私钥&#xff1a; openssl req -x509 -nodes -days 3…...

【Linux】文件周边001之系统文件IO

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.C语言文件IO 1.1…...

防火墙接口配置实验

1、搭建拓扑 2、给云端添加网络&#xff0c;来实现真机与虚拟机的连接 3、 给防火墙g0/0/0口配置IP&#xff0c;由于我云端绑定的是192.168.100.10&#xff0c;所以这里IP配置为192.168.100.1/24,使用命令开启防火墙远程连接的服务&#xff0c;之后便可通过web远程登陆防火墙 …...

《WebKit 技术内幕》学习之五(4): HTML解释器和DOM 模型

4 影子&#xff08;Shadow&#xff09;DOM 影子 DOM 是一个新东西&#xff0c;主要解决了一个文档中可能需要大量交互的多个 DOM 树建立和维护各自的功能边界的问题。 4.1 什么是影子 DOM 当开发这样一个用户界面的控件——这个控件可能由一些 HTML 的标签元素…...

SpringBoot+Vue充电桩管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1. 分页获取预约数据代码2.保存预约信息代码3.修改订单状态代码 一、项目演示 项目演示地址&#xff1a; 视频地址 二、项目介绍 项目描述&#xff1a;这是一个基于SpringBootVue框架开发的充电桩管理系统。首先&…...

【数据结构】二叉树算法讲解(定义+算法原理+源码)

博主介绍&#xff1a;✌全网粉丝喜爱、前后端领域优质创作者、本质互联网精神、坚持优质作品共享、掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战✌有需要可以联系作者我哦&#xff01; &#x1f345;附上相关C语言版源码讲解&#x1f345; &#x1f44…...

Vue3基础:挂载事例方法.mount()是什么?根组件模板又是什么?

.mount() <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Vue 3 演示</title> </head>…...

Unity 面试篇|(七)Unity渲染与Shader篇 【全面总结 | 持续更新】

目录 1.问一个Terrain&#xff0c;分别贴3张&#xff0c;4张&#xff0c;5张地表贴图&#xff0c;渲染速度有什么区别&#xff1f;为什么&#xff1f;2.什么是LightMap&#xff1f;3.MipMap是什么&#xff0c;作用&#xff1f;4.请问alpha test在何时使用&#xff1f;能达到什么…...

记录一些多维数组的方法

文章目录 前言一、获取多维数组的数据二、多维数组自带的方法总结 前言 验证过程中&#xff0c;我们经常会用到多维数组存储数据&#xff0c;本文主要记录一下&#xff0c;如何去获取我们需要的数据&#xff0c;以及多维数组自带的一些方法。 一、获取多维数组的数据 获取多维…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...