当前位置: 首页 > 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)// 进度可更…...

Azure 虚拟机端口资源:专用 IP 和公共 IP Azure Machine Learning 计算实例BUG

## 报错无解 找不到Azure ML 计算实例关联的 NSG .env 文件和 ufw status&#xff1a; .env 文件中 EXPOSE_NGINX_PORT8080 是正确的&#xff0c;它告诉 docker-compose.yaml 将 Nginx 暴露在宿主机的 8080 端口。 sudo ufw status 显示 Status: inactive&#xff0c;意味着宿…...

OD 算法题 B卷【水果摊小买卖】

文章目录 水果摊小买卖 水果摊小买卖 小王手里有点闲钱&#xff0c;想做点水果买卖&#xff0c;给出两个数组m, n&#xff0c; m[i]表示第i个水果的成本价&#xff0c;n[i]表示第i个水果能卖出的价格&#xff1b;假如现在有本钱k&#xff0c;试问最后最多能赚多少钱&#xff1…...

建造者模式深度解析与实战应用

作者简介 我是摘星&#xff0c;一名全栈开发者&#xff0c;专注 Java后端开发、AI工程化 与 云计算架构 领域&#xff0c;擅长Python技术栈。热衷于探索前沿技术&#xff0c;包括大模型应用、云原生解决方案及自动化工具开发。日常深耕技术实践&#xff0c;乐于分享实战经验与…...

pgsql batch insert optimization (reWriteBatchedInserts )

reWriteBatchedInserts 是 PostgreSQL JDBC 驱动 提供的一个优化选项&#xff0c;它可以 重写批量插入语句&#xff0c;从而提高插入性能。 作用 当 reWriteBatchedInsertstrue 时&#xff0c;PostgreSQL JDBC 驱动会将 多个单独的 INSERT 语句 转换为 一个多行 INSERT 语句&a…...

Unity的日志管理类

脚本功能&#xff1a; 1&#xff0c;打印日志到控制台 2&#xff0c;显示日志到UI Text 3&#xff0c;将日志写入本地文件 这对unity开发安卓平台来说很有用 using System; using System.IO; using System.Text; using UnityEngine; using UnityEngine.UI;public class FileLo…...

阿里云域名怎么绑定

阿里云服务器绑定域名全攻略&#xff1a;一步步轻松实现网站“零”障碍上线&#xff01; 域名&#xff0c;您网站在云端的“身份证”&#xff01; 在数字化浪潮中&#xff0c;拥有一个属于自己的网站或应用&#xff0c;是个人展示、企业运营不可或缺的一环。而云服务器&#x…...

数据分析之OLTP vs OLAP

数据处理系统主要有两种基本方法&#xff1a;一种注重数据操作(增删查改)&#xff0c;另一种注重商业智能数据分析。 这两种系统是&#xff1a; 联机事务处理&#xff08;OLTP&#xff09; 联机分析处理&#xff08;OLAP&#xff09; Power BI专为与OLAP系统兼容而构建&…...

紫光同创FPGA系列实现Aurora 8b/10b协议

特性 1.兼容XILINX aurora IP核 2.支持X1、X2、X4、X8模式&#xff08;根据硬件条件选择模式&#xff09; 3.支持FRAMING和STREAMING 用户接口 4.自动初始化和维护链路状态 5.支持热插拔 6.支持扰码、解扰 7.支持流量控制 8.支持crc用户数据 9.支持全双工或者半双工模式 10.最…...

LVGL手势识别事件无上报问题处理记录

最近在使用LVGL8.3开源库开源UI界面时,碰到使用FB驱动显示UI时,触摸屏手势识别事件接收不到的情况,通过如下调整可以处理该问题: 1、创建Top Object时,不能使用如下语句: lv_obj_t *page_obj = lv_obj_create(lv_scr_act()); 而要使用如下语句: lv_obj_t *page_obj =…...

【发布实录】云原生+AI,助力企业全球化业务创新

5 月 22 日&#xff0c;在最新一期阿里云「飞天发布时刻」&#xff0c;阿里云云原生应用平台产品负责人李国强重磅揭晓面向 AI 场景的云原生产品体系升级&#xff0c;通过弹性智能的一体化架构、开箱即用的云原生 AI 能力&#xff0c;为中国企业出海提供新一代技术引擎。 发布会…...