Java中关于win下的环境变量以及不同版本JDK自由切换的原理分析,授人以渔

简介: Java中关于win下的环境变量以及不同版本JDK自由切换的原理分析,授人以渔

本篇博文即授人以鱼也授人以渔,想获得更多的原理分享,知其所以然,那就点个关注吧,持续更新中…

一. 不同版本JDK自由切换

须知点:
下载JDK之后,系统会自动将java.exe,javaw.exe,javaws.exe三个可执行文件复制到了 [C:\Windows\System32C:\Program Files (x86)\Common Files\Oracle\Java\javapathC:\Program Files\Common Files\Oracle\Java\javapathC:\ProgramData\Oracle\Java\javapath]中,由于这个目录在windows中的优先级高于JAVA_HOME设置的环境变量的优先级,因为在我们配置的环境变量上面,java在读取环境变量的时候会在系统环境变量Path中从上到下读取,当读取到可用的环境变量时,就会立即生效,不在继续往下读,所以我们设置的环境变量不会起作用。(注:不同的电脑可能会有不同的情况,需要把这些路径都试验过),并且这个路径会添加到系统环境变量Path中,如下:
在这里插入图片描述

在这里插入图片描述
要想我们自己配置的环境变量生效,有如下几种方式:

  1. 第一种方法:直接删除掉系统自动生成的可执行文件
    直接删除掉系统自动生成的java.exe,javaw.exe,javaws.exe这三个可执行文件,这样当读取到这个路径的时候,找不到对应的文件,系统将继续往下读取配置的环境变量,我们下面配置的环境变量得以生效。
  2. 第二种方法:把我们自己配置的环境变量置顶
    java在读取环境变量的时候会在系统环境变量Path中从上到下读取,当读取到可用的java文件时,就会立即生效,不在继续往下读,所以如果我们想使用到我们自己配置的环境变量,只需把我们自己配置的环境变量提前,提到自动生成的java.exe,javaw.exe,javaws.exe这三个可执行所在路径的前面即可
    在这里插入图片描述
    在这里插入图片描述

二.openJDK和SUN\Oracle JDK自由切换举例说明

举例:
比如当前的JKD路径为Sun公司提供的,路径如下:
在这里插入图片描述
环境变量Path配置如下:

在这里插入图片描述
控制台查看java版本信息:
在这里插入图片描述

  • Java™ SE Runtime Environment (build 1.8.0_271-b09) 是Java运行时环境(即JRE)的版本信息.
  • Java HotSpot™ 64-Bit Server VM 表明, 此JDK的JVM是Oracle的64位HotSpot虚拟机, 运行在Server模式下(虚拟机有Server和Client两种运行模式).

接下来改成openJDK的路径,openJDK路径如下:

在这里插入图片描述
更改后的系统环境变量Path如下:

在这里插入图片描述
控制台查看java版本信息:(注意此时查看需要重启控制台)

在这里插入图片描述
可以看到Java运行时环境和Java虚拟机版本都变成了OpenJDK所提供的了,版本切换完成,同理也可以切换SUN\Oracle 公司的不同版本JDK。

二 .关于CLASSPATH和Java_Home的配置说明:

在jdk1.5以后,java开发环境配置的时候,不需要对classpath进行配置,但市面上的书籍,以及一些博客、还是老一套,继续推荐配置classpath,并且关于不需要配置classpath网络上没有什么完整细致,还有个配置起到什么作用都没说清楚,我个人在下面进行说明一下:
以前的CLASSPATH配置如下:

.;%Java_Home%\bin;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar
AI 代码解读

Java_Home表示一个路径,我们可以用两个%符号取到改路径值来进行拼接完整的jdk路径,(有时候为了图方便也可以不用配置这个,直接在系统环境变量Path中写全路径即可),其中:

dt.jar是关于运行环境的类库,主要是用于swing的包,如果不使用可以不配置。tools.jar是工具类库,它在编译和运行一个类时被使用

这里举例说明一下关于tools.jar包的作用之一,在我们使用javac命令编译程序时,系统会加载tools.jar,其实会封装如下这条命令:

javac XXX.java

java -Classpath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java
AI 代码解读

在JDK1.5以后,classpath并不是必须配置的,在JDK1.5之前,是没有办法在当前目录下加载类的(找不到 JDK目录下lib文件夹中的.jar文件),所以我们需要通过配置classpath,但JDK1.5之后,JRE能自动搜索目录下类文件,并且加载dt.jar和tool.jar的类。

目录
打赏
0
0
0
0
5
分享
相关文章
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
155 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析
本文介绍了 Spring Boot 的核心概念和使用场景,并通过一个实战项目演示了如何构建一个简单的 RESTful API。
41 5
【潜意识Java】了解并详细分析Java与AIGC的结合应用和使用方式
本文介绍了如何将Java与AIGC(人工智能生成内容)技术结合,实现智能文本生成。
64 5
【潜意识Java】深度分析黑马项目《苍穹外卖》在Java学习中的重要性
《苍穹外卖》项目对Java学习至关重要。它涵盖了用户管理、商品查询、订单处理等模块,涉及Spring Boot、MyBatis、Redis等技术栈。
91 4
【潜意识Java】使用 Ruoyi 框架开发企业级应用,从零开始的实践指南和分析问题
本文介绍了基于Spring Boot的开源企业级框架Ruoyi,涵盖环境搭建、项目初始化及用户管理模块的创建。
152 4
【潜意识Java】深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
65 1
Java中的算法优化与复杂度分析
在Java开发中,理解和优化算法的时间复杂度和空间复杂度是提升程序性能的关键。通过合理选择数据结构、避免重复计算、应用分治法等策略,可以显著提高算法效率。在实际开发中,应该根据具体需求和场景,选择合适的优化方法,从而编写出高效、可靠的代码。
55 6

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等