Windows系统下JDK1.8与JDK11版本切换超详细教程

 更新时间:2023年07月05日 08:35:00   作者:极小白  
这篇文章主要给大家介绍了关于Windows系统下JDK1.8与JDK11版本切换的超详细教程,我们可以有多个工程项目,用的JDK版本不一样,这个时候就需要进行自由切换JDK版本了,需要的朋友可以参考下

一、JDK生效原理

想必大家都在为如何流畅的切换JDK版本问题而来,那么在此篇文章开始之前,首先我们来思考一下这样一个问题:系统是如何使得我们安装的JDK生效的?

聪明的你一定想到了,是的,要想使得我们安装的JDK生效,我们需要配置它的环境变量,让系统知道我们已经安装了JDK并且已经可以使用。

我们大家一般配置环境变量都是先新建一个系统变量JAVA_HOME,而JAVA_HOME所表示的路径为我们安装jdk的路径(不包含bin目录)即:

之后我们会在Path系统变量中新建环境变量%JAVA_HOME%\bin即:

那么这些环境变量和JDK生效有什么关系呢?我们来看bin目录下到底有什么内容:

jdk的bin目录:我们看到了熟悉的字眼,没错,就是java和javac命令,它们就是我们每次配置完JDK验证JDK成功的命令,其中javac命令还可以使我们编写的Java文件编译成字节码文件(.class文件)

jdk自带的jre的bin目录:

那么计算机如何才能准确的调用这些命令呢?当然是通过Path环境变量来进行查找,Path环境变量的值是一系列路径,Windows操作系统将在此一系列路径中查找命令,若能找到则可执行这些命令,即可以说Windows是通过JAVA_HOME来找到JDK和JRE的,并且当前JDK8以及JDK8之后已经集成了JRE,因此我们在配置JRE时无需再配置CLASSPATH以及配置%JAVA_HOME%\jre\bin环境变量。

那说了这么多,这些和JDK版本的切换有什么关系呢?接下来我们用图来表示。

请添加图片描述

我们当前有一个Java文件,若当前它使用的是JDK8编译的,而我们想要使用JDK11来编译它,怎么办呢,最简单的方法就是将JAVA_HOME的内容改为JDK11,具体操作如下:

二、安装配置JDK11

笔者现在安装一个JDK11(笔者已经安装有JDK8)

点击下一步

配置好路径后,点击下一步

等待安装

点击关闭

安装成功后,笔者的所有JDK文件如下图所示:

点击进入jdk-11中,我们看到JDK11已经完全集成了JRE,已经完全看不到JRE的身影

三、切换JDK11版本

若我们想要切换JDK11版本,我们需要修改JAVA_HOME的JDK路径,具体步骤如下图所示:

修改JAVA_HOME的JDK路径为JDK11的路径:

请添加图片描述

四、查看切换JDK11版本是否成功

之后,我们查看JDK版本是否切换成功:输入java -version命令查看JDK版本

java -version

我们发现JDK11版本已经切换成功!!!

五、再次切换至JDK8版本

根据以上步骤,我们需要修改JAVA_HOME的JDK路径,具体步骤如下图所示:
修改JAVA_HOME的JDK路径为JDK8的路径:

请添加图片描述

六、查看切换JDK8版本是否成功

之后全部保存后,我们查看JDK版本是否切换成功:输入java -version命令查看JDK版本

java -version

我们发现,JDK的版本并没有被切换回来!!!

原因:这是为什么呢?这是因为当我们安装并配置好JDK11之后它会自动生成一个环境变量(此变量我们看不到),此环境变量优先级较高,导致我们在切换回JDK8后系统会先读取到JDK11生成的环境变量,而不会读取到JDK8的环境变量。

解决办法:我们需要将%JAVA_HOME%\bin上移至环境变量最高处(赋予它最高的优先级)

之后,我们再次查看JDK版本是否切换成功:输入java -version命令查看JDK版本

我们看到已然切换成功!!!

总结

到此这篇关于Windows系统下JDK1.8与JDK11版本切换的文章就介绍到这了,更多相关JDK1.8与JDK11版本切换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于@RequestBody注解只能注入对象和map的解决

    基于@RequestBody注解只能注入对象和map的解决

    这篇文章主要介绍了@RequestBody注解只能注入对象和map的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Spring实战之缓存使用condition操作示例

    Spring实战之缓存使用condition操作示例

    这篇文章主要介绍了Spring实战之缓存使用condition操作,结合实例形式分析了Spring缓存使用condition具体配置、属性、领域模型等相关操作技巧与注意事项,需要的朋友可以参考下
    2020-01-01
  • Java基础第四篇 封装与接口

    Java基础第四篇 封装与接口

    本文将对介绍Java 的封装与接口进行介绍,将要封装(encapsulation)对象的成员(成员包括数据成员和方法),从而只允许从外部调用部分的成员。利用封装,我们可以提高对象的易用性和安全性。想具体了解的小伙伴请参考下面文章的内容
    2021-09-09
  • 关于Java中Json的各种处理

    关于Java中Json的各种处理

    这篇文章主要介绍了关于Java中Json的各种处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • springboot整合jcasbin权限管理

    springboot整合jcasbin权限管理

    jcasbin的权限控制非常简单,本文就来介绍一下springboot整合jcasbin权限管理,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • java防反编译最简单的技巧分享

    java防反编译最简单的技巧分享

    这篇文章主要给大家分享了关于java防反编译最简单的技巧,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-09-09
  • 实例详解Java调用第三方接口方法

    实例详解Java调用第三方接口方法

    很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信、天气等),下面这篇文章主要给大家介绍了关于Java调用第三方接口方法的相关资料,需要的朋友可以参考下
    2022-06-06
  • SpringBoot+Thymeleaf实现生成PDF文档

    SpringBoot+Thymeleaf实现生成PDF文档

    Thymeleaf是一个现代的服务器端 Java 模板引擎,适用于 Web 和独立环境。Thymeleaf 的主要目标是为您的开发工作流程带来优雅的自然模板,本文就来用它实现生成PDF,感兴趣的可以了解一下
    2022-09-09
  • Java List移除相应元素的超简洁写法分享

    Java List移除相应元素的超简洁写法分享

    这篇文章主要介绍了Java List移除相应元素的超简洁写法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Protobuf详解及入门指南附完整代码

    Protobuf详解及入门指南附完整代码

    Protobuf是一种由Google开发的二进制序列化格式,用于高效地序列化和反序列化结构化数据,它广泛应用于分布式系统、RPC框架和数据存储中,提供了高效性、简洁性、版本兼容性和语言无关性,本文介绍Protobuf详解及入门指南,感兴趣的朋友一起看看吧
    2025-03-03

最新评论