在Window10或11系统中同时安装 JDK8 和 JDK11

news/2024/12/2 9:17:04/

在Window10或11系统中同时安装 JDK8 和 JDK11

最近写项目,之前的项目是用Java8环境开发的,在二次迭代中,但是新开发的项目采用Java11环境来开发,所以需要同时安装JDK8和JDK11环境,但是两个环境是不能同时使用的,每次切换使用某一种环境,我这里做个记录,把一些踩的坑也记录下,大家在进行操作时可以参考一下。

本文指导读者如何从Oracle官网下载并部署JDK8和11,设置JAVA_HOME、JAVA11_HOME和JAVA8_HOME环境变量,以及如何正确配置PATH以确保不同JDK版本间的顺利切换,特别关注了如何避免与Oracle默认路径冲突。

安装jdk:
从Oracle 官网下载两个版本的 JDK 文件到本地,官网下载地址:JDK 下载 | ORACLE
大家可以在官网下载,也可以用下面的链接下载,主要是看自己需要的版本:
jdk」https://www.aliyundrive.com/s/zxmMxE6zsdb 提取码: 79lb

下载好之后双击exe文件,启动安装程序,选择好安装的路径即可,这里要注意一点不要有中文路径,切记。

二、安装
① JDK 1.8安装
在这里插入图片描述
选择“是”,然后如下图:
在这里插入图片描述
点击下一步:

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

安装过程中会弹出jre的安装提示框,如下所示:
在这里插入图片描述这里无需改动,点击下一步,然后你会看到这个:
在这里插入图片描述

在这里插入图片描述

② JDK 11安装
JDK11安装速度实际是很快的,因为它没有为我们安装jre,而1.8会去安装jre,这就是区别所在,其他操作都跟安装Java8的jdk一样,另外,后面的JDK版本可能都不会为你安装jre,因此你需要手动去生成jre文件。在后面配置环境变量哪里会说明怎么生成JDK 11的jre文件。
在这里插入图片描述
三、 配置环境变量
① 进入高级系统设置
方式一:使用快捷键Win + S ,在输入框中输入env,按回车即可。
在这里插入图片描述
方式二:

鼠标右键 “此电脑” 选择属性,之后会出现一个弹窗,点击 “高级系统设置”

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
② JDK1.8配置
在这里插入图片描述
输入完成之后点确认,第一项配置就完成了,接下来进行第二步

2.新建CLASSPATH 变量,变量值为:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意前面是有一个点的),配置好之后如下图,这里是可以复制粘贴的。
在这里插入图片描述
然后点确定保存变量,进入第三步

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

然后点确定保存,出去之后再点确定,然后再点确定,至此环境变量配置完毕,接下来就是测试环境变量配置有没有问题了。

③ JDK11配置
在这里插入图片描述
点击确定,然后我们在系统变量下找到Path变量,点击编辑,然后再弹出的窗口中点击新建按钮,输入:
%JAVA_HOME11%\bin
%JAVA_HOME11%\jre\bin
注意这里是新建一次添加一个,你不要一次就添加两个,那样是不行,如下图所示就是最终结果.
在这里插入图片描述
java11生成jre文件夹
用快捷键Win + S,输入cmd,选择以管理员身份运行
在这里插入图片描述
因为我是安装在D盘,所以首先我们进入D盘:

D:

进入JDK11安装目录

cd Java\jdk-11

然后使用如下命令生成jre文件夹

bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre

输入指令之后回车即可生成,注意不要重复生成,你也生成不了。如下图所示。
在这里插入图片描述
jre文件夹已经生成成功了。
在这里插入图片描述
四、验证环境变量配置
验证这个地方JDK1.8和JDK11没有什么区别,快捷键“ win + R ” ,打开运行窗口,输入cmd,点击确定打开命令行窗口。

在这里插入图片描述
java 验证
在这里插入图片描述
javac 验证
在这里插入图片描述
java -version 验证
再输入 java -version ,回车执行,(注意,java -version 中间有空格,我看到太多粗心的少打空格而失败了,切记、切记、切记。)
在这里插入图片描述
到这里你的Java环境已经安装好了!

下面是针对需要安装Java8和Java11两个环境的同学进行的操作:

首先你需要根据上面的安装好Java8和Java11的配置

然后配置路径
创建两个JAVA_HOME子变量JAVA8_HOME和JAVA11_HOME,分别指向jdk8和jdk11的安装目录
设置PATH环境变量的值为:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
设置JAVA_HOME环境变量的值:%JAVA_HOME8% 或 %JAVA_HOME11%
这样,在使用时如果需要切换jdk版本,只需要替换JAVA_HOME的值为相应的子变量即可

注意 :在同一个电脑上不能同时配置多个JDK环境变量,但是我们可以通过修改JDK环境变量中的JAVA_HOME 将值改成相应的JDK安装目录,达到来回切换的目的。

在这里插入图片描述
系统变量中的path中的%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin不需要变动。如图:
在这里插入图片描述
查看Java版本
在命令行下输入java -version
在这里插入图片描述

注意问题
有可能在修改成jdk8之后java -version还是显示的jdk11
这时要检查环境变量里的path配置,%JAVA_HOME%\bin之前是否还有对其他jdk版本进行了配置
因为系统识别是默认识别Path配置最前面的安装目录

在这里插入图片描述
打开cmd,输入java -version命令,查看版本,版本为JDK8。

切换版本:修改系统变量JAVA_HOME的值为 %JAVA11_HOME%

重启cmd 注意:一定要重启cmd!

BUG

输入java -version命令,查看版本,版本仍然为JDK8。

问题:切换版本失败

解决方案:
这里可以看到,在 Path 中的第二行,还有一个配置 C:\Program Files\Common Files\Oracle\Java\javapath 这是在安装 JDK 时 Oracle 默认的位置,为了实现可以方便的切换JDK的版本,就需要保证%JAVA_HOME%\bin 的配置在 Oracle 默认的路径配置的最前边 或者将 默认的路径和配置删除掉,否则会导致切换的失败。
改为版本之后要重启cmd 注意:一定要重启cmd!

好了,到此都没问题恭喜你就安装和切换版本成功了!可以点赞收藏一下吧~


http://www.ppmy.cn/news/1551711.html

相关文章

大模型开发和微调工具Llama-Factory-->LoRA合并

LoRA 合并 当我们基于预训练模型训练好 LoRA 适配器后,我们不希望在每次推理的时候分别加载预训练模型和 LoRA 适配器,因此我们需要将预训练模型和 LoRA 适配器合并导出成一个模型。根据是否量化以及量化算法的不同,导出的配置文件有所区别。…

大模型开发和微调工具Llama-Factory-->量化1(GPTQ 和 AWQ)

量化 大语言模型的参数通常以高精度浮点数存储,这导致模型推理需要大量计算资源。 量化技术通过将高精度数据类型存储的参数转换为低精度数据类型存储, 可以在不改变模型参数量和架构的前提下加速推理过程。这种方法使得模型的部署更加经济高效&#x…

第十六届蓝桥杯模拟赛(第一期)-Python

本次模拟赛我认为涉及到的知识点: 分解质因数 Python的datetime库 位运算 简单dp 1、填空题 【问题描述】 如果一个数 p 是个质数,同时又是整数 a 的约数,则 p 称为 a 的一个质因数。 请问 2024 有多少个质因数。 【答案提交】 这是一道结…

刷题日常(找到字符串中所有字母异位词,​ 和为 K 的子数组​,​ 滑动窗口最大值​,全排列)

找到字符串中所有字母异位词 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 题目分析: 1.将p里面的字符先丢进一个hash1中,只需要在S字符里面找到多少个和他相同的has…

python写的服务,用docker制作镜像并且打包

步骤1 简单写一个python服务脚本app.py,通过http访问一个端口,收到helloworld from flask import Flask, request app Flask(__name__) app.route(/, methods[GET]) # 确保包括GET方法 def hello_world(): return Hello, World! if __name__ __main…

鸿蒙技术分享:Navigation页面容器封装-鸿蒙@fw/router框架源码解析(三)

本文是系列文章,其他文章见:鸿蒙fw/router框架源码解析(一)-router页面管理鸿蒙fw/router框架源码解析(二)-Navigation页面管理鸿蒙fw/router框架源码解析(四)-路由Hvigor插件实现原…

后端-mybatis的一对多

分类表和菜单表是一对多的关系,菜单表对分类表是一对一的关系,我们拿前者来写一对多。 在分类表中加上一行属性list集合 最好new一下 写查询方法 写查询的sql语句 写分类表中普通字段的映射 写菜单表的字段映射,是集合。使用collection标…

Docker 清理镜像策略详解

文章目录 前言一、删除 Docker 镜像1. 查看当前镜像2. 删除单个镜像3. 删除多个镜像4. 删除所有未使用的镜像5. 删除悬空的 Docker 镜像6. 根据模式删除镜像7. 删除所有镜像 二、删除 Docker 容器1. 查找容器2. 删除一个或多个特定容器3. 退出时删除容器4. 删除所有已退出的容器…