之前做Java项目时一直用的是jdk1.8,现在想下载另一个jdk版本17,并且在之后的使用中可以进行相互切换,我将jdk切换时所遇到的问题记录下来并分享出来供大家参考。

1.环境变量中之前已经配置好的jdk1.8。

环境变量配置如下:

  • 步骤1

  • 步骤2

(注:@MAVEN_HOME%\bin;是配置maven时的环境变量,如果没有安装maven就不用管)

  • 步骤3


在cmd中输入java -version为jdk1.8版本:

2.jdk1.8版本到jdk17版本的切换。

jdk17的安装路径,为了方便我是安装在和jdk1.8一样的文件目录下:

  • 步骤1
    在环境变量中另外创建两个变量名,分别为JAVA1.8_HOME和JAVA17_HOME,变量值为jdk1.8和jdk17的安装路径。
  • 步骤2
    修改JAVA_HOME的变量值为%JAVA17_HOME%,这个值就是之前创建的属于jdk17的变量名。

    点击确定后重新打开环境变量配置(若只是点击确定而没有重新打开配置则看不到变化),可以看到当修改完毕后CLASSPATH和PATH的值自动发生了变化,变成了在jdk17下的变量值。
    CLASSPATH变量和PATH变量的值:

配置完成后,在cmd中输入java -version查看jdk版本为17:

3.jdk17到jdk1.8的切换。

如果按照正常步骤来的话只需要修改JAVA_HOME的值为JAVA1.8_HOME就可以切换成jdk1.8的环境,修改过程如下:

修改后重新打开环境变量配置,CLASSPATH和PATH的值自动变成了jdk1.8的值:

此时在cmd中输入java -version查看jdk版本却发现jdk版本仍然是jdk17的版本,并没有切换成jdk1.8:

在网上寻找解决方案后,发现需要把系统变量中Path的变量值C:\Program Files\Common Files\Oracle\Java\javapath和C:\Program Files (x86)\Common Files\Oracle\Java\javapath都删掉,如图所示:

此时在cmd中输入java -version查看jdk版本,发现已经切换到了jdk1.8版本:

最后测试了在删除Path的变量值C:\Program Files\Common Files\Oracle\Java\javapath和C:\Program Files (x86)\Common Files\Oracle\Java\javapath后再进行上面的第2步操作后又能否切换回jdk17,结果发现可以成功切换成jdk17版本:

总结。

可以看出如果想要切换jdk版本,那就只需要删除系统变量中PATH的值C:\Program Files\Common Files\Oracle\Java\javapath和C:\Program Files (x86)\Common Files\Oracle\Java\javapath,然后修改JAVA_HOME的值就可以随意进行jdk的切换。之前那个没有切换成功的原因我想是因为下载了jdk17后,原来C:\Program Files (x86)\Common Files\Oracle\Java\javapath和C:\Program Files\Common Files\Oracle\Java\javapath中的java.exe、javaw.exe、javaws.exe已经变成了jdk17的版本,即使是修改了环境变量的值也不会切换到jdk1.8,那还不如直接在PATH变量删除这两个变量,而且删除后没有受到什么影响,也能够进行正常切换。希望这篇文章能够帮助到你们,谢谢!

Java中jdk1.8和jdk17相互切换相关推荐

  1. java中jdk1.8,做forEach,需要把外面的变量赋值如int,long,boolean,需要外面定义原子类型的Atomic类型,AtomicBoolean,AtomicInteger

    2022-01-05 星期三 1414 by:enAn java中jdk1.8,做forEach,需要把外面的变量赋值如int,long,boolean,需要外面定义原子类型的Atomic,如:Ato ...

  2. ar8031网卡中的光口和电口相互切换

    经过一段时间的奋斗,实现了ar8031网卡的光口和电口相互切换.其中的几个关键概念需要厘清.光口如果是SFP的1000M模块需要注意,一定只能是1000M模式.因为这个问题卡了一段时间.不过因为这些问 ...

  3. java中磁盘和内存的相互,Java:有没有磁盘和内存一样快的情况?

    我正在写一些代码来访问inverted index. 我有两个可互换的类,它们对索引执行读操作.一个从磁盘读取索引,缓冲其中的一部分.另一个将索引完全加载到内存中,作为byte [] [](索引大小约 ...

  4. 【JDK】如何实现jdk1.8与jdk11环境的相互切换

    最近自己一直在使用的主机快要过期了,公司给换了笔记本,因为不同的项目会使用到不同的 JDK 环境,因此,准备在笔记本上配置下可自由切换的 JDK 环境,在此记录一下. 1.下载和安装JDK1.8和JD ...

  5. Java中Socket通信-客户端与服务端相互传输对象数据

    场景 Java中Socket通信-服务端和客户端双向传输字符串实现: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1084885 ...

  6. java中如何实现多语言切换

    一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...

  7. 华为p9总是显示切换服务器中,原来华为手机是有双系统模式的,保护个人隐私,一部手机相互切换!...

    原标题:原来华为手机是有双系统模式的,保护个人隐私,一部手机相互切换! 在生活中我们都会比较注意自己的隐私,尤其是手机中的一些个人消息照片等,所以我们轻易不会将手机借给他人,但是也不妨有例外的时候,想 ...

  8. java中类型的相互转化_Java中的数据类型及相互转换方法

    本文主要讲解两个部分: 一.Java中的数据类型有哪些? 二.数字类型和字符串类型相互转换的方法? 一.Java中的数据类型有哪些: Java中的数据类型有:基本数据类型和引用数据类型: 基本数据类型 ...

  9. Java中的数据类型及相互转换方法

    本文主要讲解两个部分: 一.Java中的数据类型有哪些? 二.数字类型和字符串类型相互转换的方法? 一.Java中的数据类型有哪些: Java中的数据类型有:基本数据类型和引用数据类型: 基本数据类型 ...

最新文章

  1. python展示_python展示ppt
  2. BugkuCTF-Misc:爆照(08067CTF)
  3. 应用程序窗口hwnd初始化_Golang OpenGL 跨平台图形程序开发(2)你好,窗口
  4. 安卓加载mysql数据到列表里_Android如何从数据库中加载海量数据
  5. 27.Qt操作sqlite3数据库
  6. 微信小程序 页面如何自动滚动到底部
  7. Python环境搭建之OpenCV(转载)
  8. 一键杀死最近打开APP
  9. pca百分比取多少比较好_欧式家具沙发价格是多少?沙发怎么护理会比较好?
  10. 计算机access基础操作,计算机基础--ACCESS-要求与操作步骤.pdf
  11. 苹果个人开发者账号如何升级成公司账号
  12. StringUtil详解
  13. Wind的实时行情API使用
  14. 中英文论文写作指导第三部分(实验、材料和方法部分)
  15. 华硕顽石四代自主扩展内存条图解
  16. linux nano编译器_Nano 编辑器可以做些什么?
  17. 支付宝20积分兑换15天会员
  18. 机器人RobotCali数据集解读
  19. Real-time signal
  20. 初试401 英语86分上岸苏州大学经验分享

热门文章

  1. adb:failed to install app.apk Failure [INSTALL_FAILED_VERSION_DOWNGRADE: Package Verification Result
  2. 青岛科技大学计算机专硕拟录取分数,青岛科技大学2018年硕士研究生第一批拟录取名单公示...
  3. android 开发社区
  4. 要命啦!Word中快速录入大全,内含快捷键小技巧,快来一起学习!
  5. vue js 复制div区域内容
  6. fleaphp 的好教程下载地址
  7. SpringBoot新项目配置
  8. 杭中国高铁“走出去”的意义
  9. Impala 三大组件:Impala Daemon, Impala Statestore, Impala Catelog
  10. 微信小程序----App生命周期