吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1613|回复: 11
收起左侧

[学习记录] windows快速切换jdk版本号

[复制链接]
黑白客 发表于 2023-2-3 16:19

前言

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


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币的小伙伴,帮忙多给我文章多点点赞私信我给你

免费评分

参与人数 3吾爱币 +2 热心值 +3 收起 理由
XiaoXin10 + 1 + 1 收藏了,等需要的时候再来拿
灵影 + 1 + 1 谢谢@Thanks!
zxywan + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

firo1603 发表于 2023-2-3 16:43
不用这么麻烦
用powershel的new-alias就行了
类似于Linux 中 alternative 命令
场景:电脑有多个 Java 版本,当用户试图在命令行调用非环境变量(PATH)的 java.exe时,通常需要费尽心思找到它们的完整路径

比如:
"D:\ProgramData\.jdks\openjdk-16.0.2\bin\java.exe" -jar core.jar

我们仅需在 powershell 中执行
ps> New-Alias -Name java16 -Value "D:\ProgramData\.jdks\openjdk-16.0.2\bin\java.exe"

如果你还有其他版本的 Java,可以定义多个别名
ps> New-Alias -Name java18 -Value "D:\ProgramData\.jdks\openjdk-18.0.4\bin\java.exe"

这样下次调用仅需要:
java16 -jar core.jar
java18 -jar core.jar
mainblog 发表于 2023-2-3 16:32
zxywan 发表于 2023-2-3 16:34
ysjd22 发表于 2023-2-3 16:34
龙猫不错。谢谢
attar 发表于 2023-2-3 18:42
谢谢分享,学了一招。
cn2jp 发表于 2023-2-3 19:53
想当年我连变量环境都不会配置,一晃这么多年过去了,还是不会
bjfixhdd 发表于 2023-2-3 21:15
好东西,支持一下
 楼主| 黑白客 发表于 2023-2-4 17:26
firo1603 发表于 2023-2-3 16:43
不用这么麻烦
用powershel的new-alias就行了
类似于Linux 中 alternative 命令

大佬 请教一下:
我按照你说的报了这个错误:
Error: Unable to access jarfile core.jar
可以指点一下吗
firo1603 发表于 2023-2-4 20:50
黑白客 发表于 2023-2-4 17:26
大佬 请教一下:
我按照你说的报了这个错误:
Error: Unable to access jarfile core.jar

你本地没有core.jar这个文件当然报错啊,改成你自己打包的jar程序
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-1 07:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表