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版本切换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解使用Mybatis-plus + velocity模板生成自定义的代码

    详解使用Mybatis-plus + velocity模板生成自定义的代码

    这篇文章主要介绍了详解使用Mybatis-plus + velocity模板生成自定义的代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • java Lambda表达式的使用心得

    java Lambda表达式的使用心得

    这篇文章主要介绍了java Lambda表达式的使用心得,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • java并查集算法带你领略热血江湖

    java并查集算法带你领略热血江湖

    这篇文章主要为大家介绍了java并查集算法,以大家热爱的方式,带你领略热血江湖中的并查集算法,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • 解决SpringMvc后台接收json数据中文乱码问题的几种方法

    解决SpringMvc后台接收json数据中文乱码问题的几种方法

    本篇文章主要介绍了解决SpringMvc后台接收json数据中文乱码问题的几种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Java查看本机端口是否被占用源码

    Java查看本机端口是否被占用源码

    这篇文章主要介绍了Java查看本机端口是否被占用的主要原理,并结合具体实例给出了操作方法,需要的朋友可以参考下
    2017-09-09
  • Spring Security基于HttpRequest配置权限示例详解

    Spring Security基于HttpRequest配置权限示例详解

    这篇文章主要介绍了Spring Security基于HttpRequest配置权限示例详解,我们在配置中配置的url被封装成RequestMatcher,而hasRole被封装成AuthorityAuthorizationManager,本文结合示例代码讲解的非常详细,需要的朋友可以参考下
    2024-03-03
  • mybatis-plus Wrapper条件构造器updateForSet更新方式

    mybatis-plus Wrapper条件构造器updateForSet更新方式

    这篇文章主要介绍了mybatis-plus Wrapper条件构造器updateForSet更新方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java中的Map接口实现类HashMap和LinkedHashMap详解

    Java中的Map接口实现类HashMap和LinkedHashMap详解

    这篇文章主要介绍了Java中的Map接口实现类HashMap和LinkedHashMap详解,我们常会看到这样的一种集合,IP地址与主机名,等,这种一一对应的关系,就叫做映射,Java提供了专门的集合类用来存放这种对象关系的对象,需要的朋友可以参考下
    2024-01-01
  • Spring Integration 实现消息驱动的详细步骤

    Spring Integration 实现消息驱动的详细步骤

    Spring Integration是一个用于构建消息驱动的中间件轻量级框架,它提供了一种模型和工具,用于在Spring应用程序中实现企业集成模式,这篇文章主要介绍了Spring Integration 实现消息驱动,需要的朋友可以参考下
    2024-05-05
  • Java下载文件时文件名乱码问题解决办法

    Java下载文件时文件名乱码问题解决办法

    我最近在开发时遇到了文件另存为时文件名出现乱码,在火狐上正常的文件名,在IE中又出现乱码问题,然后好不容易在IE下调试好了文件名乱码问题,在火狐下又出现乱码,最后终于感觉这样是能解决了。具体如下:
    2013-04-04

最新评论