windows快速切换jdk版本号

news2025/2/25 2:33:25

前言

因为老项目和新项目的需要,在电脑上需要切换jdk1.8和jdk17(其它版本jdk同样可以切换)。网上有修改配置文件的方式,但是感觉比较繁琐,后来找到了通过bat文件和环境变量来快速切换jdk环境的方法。这里记录分享出出来,
只需要通过命令行即可完成切换。


windows快速切换jdk版本号

  • 前言
  • 1 效果图
  • 2 安装需要切换的jdk并配置环境变量
  • 3 环境变量配置
  • 4 bat脚本
  • 5 不生效问题解决
    • 问题1 不生效
    • 问题2 运行命令时,报找不到可执行的程序
  • 6 源码 demo

1 效果图

管理员身份运行cmd窗口

在这里插入图片描述

效果图 打开新的命令行窗口

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2 安装需要切换的jdk并配置环境变量

官网jdk下载地址

在这里插入图片描述
通过官网下载需要的jdk

网上有很多说,通过exe或msi安装的jdk会默认该什么文件,导致切换不生效,所以如果大家还没有下载安装,就直接下载zip的压缩包,自己解压配置环境吧。

当然,如果已经安装好了,或者只安装了一个也不用卸载,下面我会分享自己遇到的不生效解决方案,如果遇到应该也可以解决你的问题。
我的安装目录:
在这里插入图片描述

3 环境变量配置

环境变量配置:
如果你已经安装配置过一个jdk的环境变量,那么就按照下面修改即可。
如果没有配置过,可以看着我下面的配置文件配置,或者留言给我。

在这里插入图片描述

选择系统变量,点击新建,输入变量名JAVA_HOME,变量值为JDK的bin目录所在路径。如图:
注意不用带bin
在这里插入图片描述

选择系统变量,找到Path变量,点击编辑。
点击新建,输入%JAVA_HOME%\bin,点击确定。
在这里插入图片描述
配置脚本所在目录
这样打开cmd输入bat脚本名就可以执行
在这里插入图片描述

4 bat脚本

根据下面配置文件的注解,修改一下自己jdk和环境变量刷新程序的路径即可。


@echo off
 
rem --- Base Config 配置JDK的安装目录---
:init 
set JAVA_HOME_1_7=C:\Program Files\Java\jdk-17.0.6
set JAVA_HOME_1_8=C:\Program Files\Java\jdk1.8.0_162
rem 刷新环境变量的程序,绝对路径
set RefreshEnv=C:\Progra~1\Java\cut_jdk\RefreshEnv.exe
echo 当前使用的JDK版本: 
echo ============================================= 
java -version 
echo. 
echo ============================================= 
echo jdk版本列表〃 
echo 8
echo 17
echo ============================================= 
 
:select
set /p opt=请选择jdk版本:
if %opt%==8 (
    set TARGET_JAVA_HOME=%JAVA_HOME_1_8%
)
if %opt%==17 (
    set TARGET_JAVA_HOME=%JAVA_HOME_1_7%
)
 
echo 当前选择的Java路径:%TARGET_JAVA_HOME%
 
wmic ENVIRONMENT where "name='JAVA_HOME'" delete
wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%TARGET_JAVA_HOME%"
 
rem 刷新环境变量
call %RefreshEnv%

echo 按任意键退出!  
pause>nul
 
@echo on


刷新环境变量的程序放在文章最后

这里有个配置需要注意,如果你的程序放在了 C:\Program Files 目录下

在这里插入图片描述
那么路径就要配置成:

C:\Progra~1\

在这里插入图片描述
其它路径直接复制粘贴过来即可

5 不生效问题解决

问题1 不生效

更换jdk版本且修改环境变量并不能生效,如原本安装了1.8,现更换为1.7,且配置了环境变量,但是java -version仍显示1.8。

原因

当使用安装版本的JDK程序时(一般是1.7版本以上),在安装结束后安装程序会自动将java.exe、javaw.exe、javaws.exe三个可执行文件复制到C:\Windows\System32目录,这个目录在WINDOWS环境变量中的优先级高于JAVA_HOME设置的环境变量优先级,故此直接更改JAVA_HOME会无效。
另外,JDK1.8安装版本,还会在C:\ProgramData\Oracle\Java目录中生成一些配置文件,并同时将此目录写到环境变量中的Path中。

解决

删除C:\Windows\System32目录下的java.exe、javaw.exe、javaws.exe三个文件

删除环境变量Path中C:\ProgramData\Oracle\Java\javapath的配置

我的C:\Windows\System32 中并没有这三个文件,但是删除了环境变量里上面的配置生效了一次

如果还不生效,再path中,将java的配置移动到最上面
在这里插入图片描述

问题2 运行命令时,报找不到可执行的程序

这个问题主要就是如果你的刷新环境变量工具如果放在了
C:\Program Files 目录下

配置会报找不到程序。
在这里插入图片描述

路径需要改成
那么路径就要配置成:

C:\Progra~1\

在这里插入图片描述

6 源码 demo

jdk1.8 – 自行下载
jdk17 – 自行下载
cutjdk.bat – 见文章 目录4 bat脚本
RefreshEnv.exe – 脚本刷新工具 传送门
在这里插入图片描述
在这里插入图片描述

到这里基本都可以实现大家的需求,麻烦大家帮文章点点赞喽!没有c币的小伙伴,帮忙多给我文章多点点赞私信我给你

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/197961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rclone挂载webdav详细步骤(含脚本)

挂载说明 文章目录挂载说明文件下载地址&#xff1a;文件夹及文件说明windows安装、配置和挂载操作步骤安装新建连接配置挂载开机自启linux安装、配置和挂载操作步骤安装新建连接配置,见 [链接新建连接配置](#新建连接配置)挂载linux开机自启文件下载地址&#xff1a; 文件下载…

如何实现前端全屏

前言 最近有个需求是要求免登录自动打开看板&#xff0c;然后全屏并播放视频。当然最后自动全屏并播放视频没有实现&#xff0c;写这篇文章是为了记录一下踩的坑。 全屏 网上有挺多现成的组件的&#xff0c;这里就不介绍了&#xff0c;可以自行百度。这里只说通过原生的方法…

手机更换电池-小米8se操作步骤

目录 准备工具&#xff1a; 步骤&#xff1a; 注意事项&#xff1a; 准备工具&#xff1a; 需要更换电池的手机电池背胶&#xff08;左上蓝色&#xff09;缠胶棍&#xff08;手机左边&#xff09;小螺丝刀新电池卡针后盖拆卸片&#xff08;右上三角&#xff09;吸盘后盖背胶 …

Cesium 点位聚合

实现效果 实现方式 通过 new Cesium.EntityCluster(options) 接口对象实现而 new Cesium.DataSource() 有成员变量 clusteringclustering 类型是 EntityCluster代码实现,基于 vue 前端框架 这里使用的是 cesium 沙盒演示中自带的数据进行实现 加载数据 getKMLDTSource() {let o…

cnetsdk:.NET OCR SDK-支持中文-Crack

产品概览 .NET OCR SDK 许可证和价格 OCR SDK 兼容性 CnetSDK .NET OCR Scanner SDK兼容.NET Framework 4.0及以上版本。此 OCR 库软件可用于在任何 CPU 上进行 .NET OCR Windows 和基于服务器的应用程序开发。我们为 x86 和 x64 系统提供 OCR 库解决方案。 OCR 图像格式 这个 …

[学习笔记]黑马程序员-Hadoop入门视频教程

文章目录参考资料大数据导论企业数据分析方向数据分析基本流程步骤明确分析的目的和思路数据收集数据处理数据分析数据展现报告攥写大数据时代大数据定义大数据的5V特征参考资料 黑马程序员大数据Hadoop入门视频教程&#xff0c;适合零基础自学的大数据Hadoop教程 目录 大数据…

C++ 面试题-设计模式类问题(万余字总结)

C 面试题-设计模式类问题1 、说说什么是单例设计模式&#xff0c;如何实现2、 简述一下单例设计模式的懒汉式和饿汉式&#xff0c;如何保证线程安全3、 请说说工厂设计模式&#xff0c;如何实现&#xff0c;以及它的优点4 、请说说装饰器计模式&#xff0c;以及它的优缺点5 、请…

数据挖掘,计算机网络、操作系统刷题笔记40

数据挖掘&#xff0c;计算机网络、操作系统刷题笔记40 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;orac…

TCP协议面试灵魂12 问(三)

等待2MSL的意义 如果不等待会怎样&#xff1f; 如果不等待&#xff0c;客户端直接跑路&#xff0c;当服务端还有很多数据包要给客户端发&#xff0c;且还在路上的时候&#xff0c;若客户端的端口此时刚好被新的应用占用&#xff0c;那么就接收到了无用数据包&#xff0c;造成…

C++高级教程——C++ 异常处理

C 异常处理C 异常处理抛出异常捕获异常C 标准的异常定义新的异常C 异常处理 异常是程序在执行期间产生的问题。C 异常是指在程序运行时发生的特殊情况&#xff0c;比如尝试除以零的操作。 异常提供了一种转移程序控制权的方式。C 异常处理涉及到三个关键字&#xff1a;try、c…

【Linux】gdb的使用

文章目录&#x1f3aa; Linux下gdb的使用&#x1f680;1.gdb调试准备&#x1f680;2.gdb指令集&#x1f680;3.gdb指令演示⭐3.1 展示源文件代码⭐3.2 断点与多步调试操作⭐3.3 常用操作指令&#x1f3aa; Linux下gdb的使用 GDB 全称“GNU symbolic debugger”&#xff0c;是一…

dp(十)* 0-1背包与完全背包的组合数问题 搞清组合数与排列数

目录 兑换零钱(二)_牛客题霸_牛客网&#xff08;完全背包&#xff09; 494. 目标和&#xff08;0-1背包&#xff09; 分割等和子集_牛客题霸_牛客网 兑换零钱(二)_牛客题霸_牛客网&#xff08;完全背包&#xff09; 描述 给定一个整数数组 nums 表示不同数额的硬币和一个正…

拉伯证券|社会消费复苏将是2023年主旋律

安排指出&#xff0c;兔年新年黄金周社会消费平稳复苏。全国范围看&#xff0c;依据国家税务总局增值税发票数据&#xff0c;2023年新年黄金周&#xff08;1月21日-27日&#xff0c;阴历岁除至正月初六&#xff09;&#xff0c;全国消费相关工作销售收入同比2022年新年假日添加…

Qt 进程(基本用法)

进程的使用情况&#xff1a; 运行的当前的应用中调用外部程序来实现功时调使用到进程。 比如&#xff1a;在你的运行程序中&#xff0c;开启迅雷或开启其他程序QProcess类用来 启动一个外部程序并与之通信QProcess类 常用一些函数&#xff1a; start&#xff08;&#xff09;…

Pycharm 中Torch安装方法

1.使用自带工具安装依次打开菜单&#xff1a;File->Setting点击号&#xff0c;搜索torch选择1.13.0版本安装安装错误&#xff1a;具体包含很长一段错误记录&#xff0c;如下&#xff1a;Collecting torch1.13.0Downloading https://files.pythonhosted.org/packages/ec/5e/8…

网络协议栈简单设计(tcp)

网络协议栈简单设计(tcp) 接着这篇文章写的 TCP相对于Udp&#xff0c;分为两个部分&#xff1a;连接&#xff08;三次握手、四次挥手&#xff09;、交互&#xff08;数据传输&#xff09; 三次握手 tcp包结构体定义 依照tcp包头字段定义就行&#xff1a; 注意&#xff0c;…

jenkins配置

ssh配置 选择Manager Jenkins 选择Configure System&#xff0c;进入页面一直拉到底 Remote Directory&#xff1a;是你需要从jenkins服务拷贝到远程应用服务指定的目录 高级&#xff1a;可以配置ssh密码 配置maven&#xff0c;git&#xff0c;jdk 选择 Global Tool Configur…

dpdk无锁队列rte_ring实现分析

1. 概述 rte_ring(以下简称ring)是一个高效率的无锁环形队列&#xff0c;它具有以下特点&#xff1a; FIFO队列长度是固定的&#xff0c;所有指针存放在数组中无锁实现(lockless)多消费者或单消费者出队多生产者或单消费者入队批量(bulk)出队 - 出队N个对象&#xff0c;否则失…

05.抽象工厂模式

05.抽象工厂模式 概念 抽象工厂模式&#xff1a;提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无须指定他们具体的类。抽象工厂又称为Kit模式&#xff0c;属于对象创建型模式。 抽象工厂可以将统一产品族的单独工厂封装起来&#xff0c;在正常使用中&#xff0…

08.适配器模式

08.适配器模式 概念&#xff1a; 将一个类的接口转化成用户需要的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式可以分为类适配器和对象适配器两种&#xff0c;区别在于适配器角色对应被适配角色的适配是通过继承还是组合…