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

【java开发环境】多版本jdk 自由切换window和linux

win10

一、准备
各种版本的jdk,按自己的需要下载。

我这里是需要jdk17和jdk8。

1、jdk17
下载:Java Downloads | Oracle,选择exe后缀文件

2、jdk8下
载:Java Downloads | Oracle,选择exe后缀文件

二、详细步骤
1、安装jdk
很简单,双击exe文件后全部默认下一步即可,安装的时候记住安装路径。

如果想卸载,按照正常应用的卸载方式即可。

2、设置环境变量
2.1 删除jdk安装时自动添加的环境变量

操作位置:系统—关于—高级系统设置—环境变量—系统变量

删除Path变量中类似于:C:\Program Files\Common Files\Oracle\Java\javapath 的变量值,不一定一模一样,但格式大同小异

2.2 添加Path变量值

%JAVA_HOME%\bin

%JAVA_HOME%\jre\bin

2.3 添加CLASSPATH(一定要完全复制哦,不要忽略一开始的 .;%)

变量名:CLASSPATH

变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

2.4 添加JAVA_HOME17

变量名:JAVA_HOME17

变量值:C:\Program Files\Java\jdk-17

变量值就是之前让记住的jdk安装路径,一般都默认安装在C:\Program Files\Java下。

2.5 设置JAVA_HOME

变量名:JAVA_HOME

变量值:%JAVA_HOME17%

最后要点击确定保存配置,到这里java17的环境就配置好了,其他版本的jdk配置步骤和这个相同。

Path变量除了要删除每次安装jdk产生的变量值之外,不用重复添加%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin,CLASSPATH和JAVA_HOME17也只用配置一次,后面无需修改。

如果要配置java8的话,只需要新增变量名为JAVA_HOME8的变量,并将JAVA_HOME变量的变量值修改为%JAVA_HOME8%即可。

三、测试
1、如图,我这里已经同时安装好了jdk17和jdk8,并配置好了环境变量。

2、此时已经切换成java17,在命令行查看Java版本。

java -version

3、切换为java8

4、重新打开命令行,查看java版本。

每次切换,一定要关闭并重新打开命令行才可成功,每次改完环境变量后,要点击确定保存生效。

可能出错误 1

场景描述:我之前用的JDK是1.8版本的,但是项目变化后需要使用17版本的,我随后加下载并安装了17版本的,环境变量配置也更改好了,命令行输入:java -version后发现出来的还是1.8版本
我的问题导致的原因:
Oracle在使用过JDK后就会将JDK的配置写到配置文件中,
若是Oracle的环境变量配置在JDK的变量前时将会被Oracle的配置信息加载覆盖掉
因此,解决办法就是
将Oracle的环境变量放到JDK环境变量之后即可~

修改后的:

Linux

1.下载页面 Java Downloads | Oracle
2.安装jdk 
      说明:

                以下目录均为本次安装目录 具体目录需要以实际为主

                npm安装会自动安装在/usr/java

                tar -zxvf 可以指定安装目录

      2.1 使用 npm命令安装jdk8
         rpm -ivh  jdk-8u411-linux-x64.rpm

      2.2 切换到cd  /usr/java路径下查看集体文件名

        [root@i rpm]# cd /usr/java
        [root@i java]# ll
        total 0
        lrwxrwxrwx 1 root root 16 Jul  1 15:06 default -> /usr/java/latest
        lrwxrwxrwx 1 root root 30 Jul  1 15:06 jdk-17 -> /usr/lib/jvm/jdk-17-oracle-x64
        lrwxrwxrwx 1 root root 31 Jul  1 15:26 jdk1.8.0-x64 -> /usr/lib/jvm/jdk-1.8-oracle-x64
        lrwxrwxrwx 1 root root 30 Jul  1 15:26 latest -> /usr/lib/jvm/jdk-17-oracle-x64
      2.3 将JDK8使用软连接并交由alternatives管理
         alternatives --install /usr/bin/java java /usr/java/jdk1.8.0-x64/bin/java 3
   解释:3: 表示该程序的优先级,当有多个可选项时,数字越大,优先级越高
      2.4 使用 npm命令安装jdk17
          rpm -ivh  jdk-17_linux-x64_bin.rpm
      2.5 将JDK17使用软连接并交由alternatives管理
        alternatives --install /usr/bin/java java /usr/java/jdk-17/bin/java 4
      2.6 使用alternatives命令切换jdk
        alternatives --config java
3.使用java命令验证当前jdk的版本
java -version
4.使用alternatives --remove删除某版本
alternatives --remove java /usr/java/jdk1.8.0-x64/bin/java
5.tar -xvzf 安装基本操作基本一致不在做详细说明
     5.1 主要安装命令目录有所改变如下命令
 tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local/jdk 
6.alternatives的一些命令介绍
# 1. --install 新注册一个group到generic name中
#alternatives --install <link> <name> <path> <priority>
# 2. --display name 显示某个通用名字中包含的组以及各个组的优先级、主从链接
# 3. --list 列出alternative系统中所有的组
# 4. --config name 交互式更改某个通用名字中的默认组;也可以
# 5. --set name path 直接设置默认组(这里的path是组中的master link的实际路径)
# 6. --auto name 把name的模式设为自动
# 7. --remove name path 删除某个组 name + path 可以唯一标识一个组

在Linux操作系统中,很多时候我们需要安装和卸载不同的软件包,其中JDK(Java Development Kit)是一个非常重要的软件包,它包含了运行Java程序所需的一切工具和库。在Linux系统中,我们通常会使用RPM(Red Hat Package Manager)来安装和卸载软件包。

在卸载JDK之前,我们首先需要确定JDK的安装路径。通常情况下,JDK默认安装在“/usr/java/”目录下。我们可以通过以下命令来确认JDK的安装路径:

```
ls /usr/java/
```

如果JDK安装在其他路径下,我们可以通过在终端中输入“java -version”命令来获取JDK的安装路径。然后,我们可以使用以下命令来卸载JDK软件包:

```
rpm -qa | grep jdk
```

这个命令将列出已安装在系统中的所有与JDK相关的软件包。然后,我们可以使用以下命令来卸载JDK软件包:

```
rpm -e
```

其中“”是我们在上一步中列出的JDK软件包的名称。通过执行这个命令,我们可以将JDK软件包从系统中完全卸载掉。

在卸载JDK软件包之后,我们还可以通过以下命令来验证JDK是否已被成功卸载:

```
java -version
```

如果系统显示类似“command not found”等信息,说明JDK已被成功卸载。另外,我们还可以通过以下命令来查看系统中是否还存在任何与JDK相关的文件:

```
find / -name "*jdk*"
```

如果在系统中依然存在与JDK相关的文件,我们可以手动删除这些文件以完成卸载操作。

总的来说,使用RPM来卸载JDK软件包是一种简单有效的方法。我们只需要通过几条简单的命令就可以将JDK从系统中完全移除。这样不仅能够释放系统资源,还能够确保系统的干净与稳定。希望以上内容对你有所帮助
 

相关文章:

【java开发环境】多版本jdk 自由切换window和linux

win10 一、准备 各种版本的jdk&#xff0c;按自己的需要下载。 我这里是需要jdk17和jdk8。 1、jdk17 下载&#xff1a;Java Downloads | Oracle&#xff0c;选择exe后缀文件 2、jdk8下 载&#xff1a;Java Downloads | Oracle&#xff0c;选择exe后缀文件 二、详细步骤 1、…...

MySQL实训项目——餐饮点餐系统

项目简介&#xff1a;餐饮点餐系统是一款为餐厅和顾客提供便捷点餐服务的在线平台。通过该系统&#xff0c;餐厅能够展示其菜单&#xff0c;顾客可以浏览菜品&#xff0c;并将其加入购物车或直接下单。系统还提供了订单管理功能&#xff0c;方便餐厅跟踪和处理顾客的订单。 1. …...

昇思MindSpore学习总结七——模型训练

1、模型训练 模型训练一般分为四个步骤&#xff1a; 构建数据集。定义神经网络模型。定义超参、损失函数及优化器。输入数据集进行训练与评估。 现在我们有了数据集和模型后&#xff0c;可以进行模型的训练与评估。 2、构建数据集 首先从数据集 Dataset加载代码&#xff0…...

AI时代创新潮涌,从探路到引路,萤石云引领千行百业创新

步入AI新时代&#xff0c;AI、云计算、大数据等技术迅速迭代&#xff0c;并日益融入经济社会发展各领域全过程&#xff0c;数字经济成为推动千行百业转型升级的重要驱动力量。 今年的政府工作报告提出&#xff0c;深入推进数字经济创新发展。积极推进数字产业化、产业数字化&a…...

计算机毕业设计Python深度学习美食推荐系统 美食可视化 美食数据分析大屏 美食爬虫 美团爬虫 机器学习 大数据毕业设计 Django Vue.js

Python美食推荐系统开题报告 一、项目背景与意义 随着互联网和移动技术的飞速发展&#xff0c;人们的生活方式发生了巨大变化&#xff0c;尤其是餐饮行业。在线美食平台如雨后春笋般涌现&#xff0c;为用户提供了丰富的美食选择。然而&#xff0c;如何在海量的餐饮信息中快速…...

【鸿蒙学习笔记】鸿蒙ArkTS学习笔记

应用开发导读&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-dev-guide-V5 这里写目录标题 基础组件通用属性容器组件Button 迭代完备 【鸿蒙培训】第&#xff11;天・环境安装 【鸿蒙培训】第&#xff12;天・装饰器・组件和页面…...

广东行政职业学院数据智能订单班开班暨上进双创工作室签约仪式圆满结束

为响应教育领域数字化与智能化浪潮这一变革&#xff0c;给学生提供更好的教育资源和实践机会&#xff0c;6月27日&#xff0c;“泰迪广东行政职业学院数据智能订单班开班仪式暨上进双创工作室签约授牌”在广东行政职业学院举行。广东行政职业学院智慧政务学院&#xff08;电子信…...

python与matlab微分切片的区别

python python使用np中的linespace生成等间隔数值&#xff0c; import numpy as np numpy.linspace(start, stop, num50, endpointTrue, retstepFalse, dtypeNone, axis0)start&#xff1a;序列的起始值。stop&#xff1a;序列的结束值。如果 endpoint 为 True&#xff0c;该…...

MSPG3507——蓝牙接收数据显示在OLED,滴答定时器延时500MS

#include "ti_msp_dl_config.h" #include "OLED.h" #include "stdio.h"volatile unsigned int delay_times 0;//搭配滴答定时器实现的精确ms延时 void delay_ms(unsigned int ms) {delay_times ms;while( delay_times ! 0 ); } int a0; …...

Linux 安装 Redis 教程

优质博文&#xff1a;IT-BLOG-CN 一、准备工作 配置gcc&#xff1a;安装Redis前需要配置gcc&#xff1a; yum install gcc如果配置gcc出现依赖包问题&#xff0c;在安装时提示需要的依赖包版本和本地版本不一致&#xff0c;本地版本过高&#xff0c;出现如下问题&#xff1a…...

【高考志愿】建筑学

目录 一、专业介绍 1.1 专业定义 1.2 专业培养目标 1.3 核心课程 二、就业方向和前景 2.1 就业方向 2.2 专业前景 三、报考注意 四、行业趋势与未来展望 五、建筑学专业排名 一、专业介绍 1.1 专业定义 建筑学&#xff0c;这一充满艺术与科技魅力的学科&#xff0c;…...

Kubernetes的发展历程:从Google内部项目到云原生计算的基石

目录 一、起源与背景 1.1 Google的内部项目 1.2 Omega的出现 二、Kubernetes的诞生 2.1 开源的决策 2.2 初期发布 三、Kubernetes的发展历程 3.1 社区的成长 3.2 生态系统的壮大 3.3 重大版本和功能 3.4 多云和混合云的支持 四、Kubernetes的核心概念 4.1 Pod 4.…...

/proc/config.gz

前言 有时候&#xff0c;我们想知道一个运行着的内核都打开了哪些编译选项&#xff0c;当然&#xff0c;查看编译环境的 .config 文件是一个不错的选择&#xff0c;除此之外&#xff0c;还有没有别的办法呢&#xff1f;当然有&#xff0c;那就是 /proc/config.gz。 一睹风采 …...

论坛万能粘贴手(可将任意文件转为文本)

该软件可将任意文件转为文本。 还原为原文件的方法&#xff1a;将得到的文本粘贴到记事本&#xff0c;另存为UUE格式&#xff0c;再用压缩软件如winrar解压即可得到原文件。建议用于小软件。 下载地址&#xff1a;https://download.csdn.net/download/wgxds/89505015 使用演示…...

学习笔记——动态路由——OSPF(OSPF协议的工作原理)

八、OSPF协议的工作原理 1、原理概要 (1)相邻路由器之间周期性发送HELLO报文&#xff0c;以便建立和维护邻居关系 (2)建立邻居关系后&#xff0c;给邻居路由器发送数据库描述报文(DBD)&#xff0c;也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器…...

Mybatis1(JDBC编程和ORM模型 MyBatis简介 实现增删改查 MyBatis生命周期)

目录 一、JDBC编程和ORM模型 1. JDBC回顾 2. JDBC的弊端 3. ORM模型 Mybatis和hibernate 区别: 4. mybatis 解决了jdbc 的问题 二、MyBatis简介 1. MyBatis快速开始 1.1 导入jar包 1.2 引入 mybatis-config.xml 配置文件 1.3 引入 Mapper 映射文件 1.3 测试 …...

论文阅读YOLO-World: Real-Time Open-Vocabulary Object Detection

核心&#xff1a; 开放词汇的实时的yolo检测器。重参数化的视觉语言聚合路径模块Re-parameterizable VisionLanguage Path Aggregation Network (RepVL-PAN)实时核心&#xff1a;轻量化的检测器离线词汇推理过程重参数化 方法 预训练方案&#xff1a;将实例注释重新定义为区域…...

SM2的签名值byte数组与ASN.1互转

ASN.1抽象语言标记(Abstract Syntax Notation One) ASN.1是一种 ISO/ITU-T 标准,描述了一种对数据进行表示、编码、传输和解码的数据格式,它提供了一整套正规的格式用于描述对象的结构。 一、该结构的应用场景 例如在做待签名的数字信封时,数字信封使用ASN.1封装,这个时…...

云计算与生成式AI的技术盛宴!亚马逊云科技深圳 Community Day 社区活动流程抢先知道!

小李哥最近要给大家分享7月7日在深圳的即将举办的亚马逊云科技生成式AI社区活动Community Day &#xff0c;干货很多内容非常硬核&#xff0c;不仅有技术分享学习前沿AI技术&#xff0c;大家在现场还可以动手实践沉浸式体验大模型&#xff0c;另外参与现场活动还可以领取诸多精…...

【鸿蒙学习笔记】基础组件Progress:进度条组件

官方文档&#xff1a;Progress 目录标题 作用最全属性迭代追加进度赋值风格样式 作用 进度条组件 最全属性迭代追加 Progress({ value: 20, total: 100, type: ProgressType.Linear }).color(Color.Green)// 颜色.width(200)// 大小.height(50)// 高度.value(50)// 进度可更…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...