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

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

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

目录
相关文章
|
5月前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
128 2
|
3月前
|
安全 Java 编译器
JDK 10中的局部变量类型推断:Java编程的简化与革新
JDK 10引入的局部变量类型推断通过`var`关键字简化了代码编写,提高了可读性。编译器根据初始化表达式自动推断变量类型,减少了冗长的类型声明。虽然带来了诸多优点,但也有一些限制,如只能用于局部变量声明,并需立即初始化。这一特性使Java更接近动态类型语言,增强了灵活性和易用性。
133 53
|
4月前
|
缓存 Java Maven
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
如何解决Java项目中因JDK版本不匹配导致的编译错误,包括修改`pom.xml`文件、调整项目结构、设置Maven和JDK版本,以及清理缓存和重启IDEA。
109 1
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
|
4月前
|
Java 关系型数据库 MySQL
【编程基础知识】Eclipse连接MySQL 8.0时的JDK版本和驱动问题全解析
本文详细解析了在使用Eclipse连接MySQL 8.0时常见的JDK版本不兼容、驱动类错误和时区设置问题,并提供了清晰的解决方案。通过正确配置JDK版本、选择合适的驱动类和设置时区,确保Java应用能够顺利连接MySQL 8.0。
389 1
|
4月前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
40 1
|
4月前
|
Java 关系型数据库 开发工具
idea创建不了spring2.X版本,无法使用JDK8,最低支持JDK17 , 如何用idea创建spring2.X版本,使用JDK8解决方案
本文提供了解决方案,如何在IDEA中创建Spring 2.X版本的项目并使用JDK8,尽管Spring 2.X已停止维护且IDEA不再直接支持,通过修改pom.xml或使用阿里云的国内源来创建项目。
221 0
idea创建不了spring2.X版本,无法使用JDK8,最低支持JDK17 , 如何用idea创建spring2.X版本,使用JDK8解决方案
|
5月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
4月前
|
Oracle Java 关系型数据库
jdk17安装全方位手把手安装教程 / 已有jdk8了,安装JDK17后如何配置环境变量 / 多个不同版本的JDK,如何配置环境变量?
本文提供了详细的JDK 17安装教程,包括下载、安装、配置环境变量的步骤,并解释了在已有其他版本JDK的情况下如何管理多个JDK环境。
2789 0
|
5月前
|
Java
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
545 61
|
6月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
77 1