Windows10下使用批处理脚本更改jdk以及java运行时版本

前言:
先来说明一下个人计算机上的一些情况,个人笔记本上最开始安装的jdk是11版本,后来因为开发需求改为了1.8,到最近安装BurpSuit2021版本又需要高版本的java环境于是又解压了一个jdk16,本以为只需要将环境变量里的JAVA_HOME修改成16版本的就可以了,没想到cmd一走java -version居然还是1.8,因此需要更改运行时的java环境。



一:查看本地环境变量

在配置jdk的时候一般都配置了JAVA_HOME,如此一来,如果想要更改本地jdk的版本,直接将JAVA_HOME的路径修改成自己想要的就可以了。
在这里插入图片描述


以及path的系统变量表:
在这里插入图片描述

但是问题来了,注意我系统path最上方还有两个路径
在这里插入图片描述

路径如下:

C:\Program Files\Common Files\Oracle\Java\javapath
C:\Program Files (x86)\Common Files\Oracle\Java\javapath

这两个路径之所以会出现,是因为我本地的java环境在版本变动后系统默认给我自动生成的,因为我最开始安装的是11,后来改为了8,所以出来了这么两条路径。而一旦有这两条路径压在我配置的jdk路径头上,即使我修改了JAVA_HOME,我个人配置的jdk环境还是得不到优先载入,系统最开始还是会去找最上面这两条路径里的环境。

而如果我们希望让自己配置的jdk优先生效,可以考虑把我们的jdk配置提到最前面。


在这里插入图片描述

如此一来我们就能够让系统优先载入了,而且再稍微修改一下注册表就能让环境生效了,可前提却是必须要重启电脑,于是我们将不采取这种方法。但是我们不想重启,于是想办法在系统开机的情况下把java的运行时版本给修改掉。

这就要依赖前面系统给我自动生成的两个路径了,因此我们保持环境变量不变,让C盘的两条javapath路径仍然占据在最前面。

在这里插入图片描述




二:探究javapath

我们先来看第一条路径C:\Program Files\Common Files\Oracle\Java\javapath
在这里插入图片描述

路径:C:\Program Files (x86)\Common Files\Oracle\Java\javapath
在这里插入图片描述

总共有java.exe 、javaw.exe、 javaws.exe、 javac.exe、 jshell.exe五个文件,其中javaws.exe在java8版本之后就已经没有了,而jshell.exe却是在java8版本之后才出现的,而根据测试,只需要将这两个目录里的文件都替换成我们对应的jdk/bin目录下的文件,再修改一下注册表就能成功修改java运行时的版本了。

此时我的java版本是16,我们想要把它修改成8版本,于是记得先把环境变量里的JAVA_HOME修改成1.8的路径。
在这里插入图片描述
于是进入我jdk1.8的bin目录,先把C:\Program Files\Common Files\Oracle\Java\javapath的所有文件都删除,然后把java.exe 、javac.exe、 javaw.exe复制粘贴进去,jshell在1.8中没有所以不用管。
在这里插入图片描述复制后:
在这里插入图片描述

然后将C:\Program Files (x86)\Common Files\Oracle\Java\javapath里的所有文件删除,将java.exe、javaw.exe、javaws.exe复制粘贴进去。

在这里插入图片描述

win+r打开运行输入regedit打开注册表

在这里插入图片描述
找到路径计算机\HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit下的CurrentVersion,将版本修改成我们当前更改的版本。

在这里插入图片描述

改为1.8


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


退出后重新输入java -version,发现运行时java环境已经修改成功了。
在这里插入图片描述



三:批处理脚本


最开头的几部,自然是把我们c盘javapath里的所有文件都删除掉,采用del命令。这里一定要加双引号,因为路径中有空格,不加会报错,提示找不到文件。虽然javaws在高版本没有,虽然jshell在低版本没有,但报错不影响执行。

del "C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe"
del "C:\Program Files (x86)\Common Files\Oracle\Java\javapath\javaw.exe"
del "C:\Program Files (x86)\Common Files\Oracle\Java\javapath\javaws.exe" 

del "C:\Program Files\Common Files\Oracle\Java\javapath\java.exe"
del "C:\Program Files\Common Files\Oracle\Java\javapath\javac.exe"
del "C:\Program Files\Common Files\Oracle\Java\javapath\javaw.exe"
del "C:\Program Files\Common Files\Oracle\Java\javapath\jshell.exe"

然后是把我们jdk/bin下的众多文件给分别复制粘贴进去,使用copy命令。这里我是打算把原本java16的环境给修改成8的环境,因此没有copy对应的jshell文件。

copy [源文件] [目标路径]

copy "D:\java JKD\jdk1.8\bin\java.exe" "C:\Program Files (x86)\Common Files\Oracle\Java\javapath"
copy "D:\java JKD\jdk1.8\bin\javaw.exe" "C:\Program Files (x86)\Common Files\Oracle\Java\javapath"
copy "D:\java JKD\jdk1.8\bin\javaws.exe" "C:\Program Files (x86)\Common Files\Oracle\Java\javapath"

copy "D:\java JKD\jdk1.8\bin\java.exe" "C:\Program Files\Common Files\Oracle\Java\javapath"
copy "D:\java JKD\jdk1.8\bin\javac.exe" "C:\Program Files\Common Files\Oracle\Java\javapath"
copy "D:\java JKD\jdk1.8\bin\javaw.exe" "C:\Program Files\Common Files\Oracle\Java\javapath"

接着是修改环境变量,使用wmic命令,这里的username=<system>指的是修改系统级别的变量。

wmic ENVIRONMENT where "name='[环境变量名]' and username='<system>'" set VariableValue="[对应的jdk路径]"

wmic ENVIRONMENT where "name='JAVA_HOME' and username='<system>'" set VariableValue="D:\java JKD\jdk1.8" 

最后是修改注册表,使用reg add命令。
用法:reg add "[注册表对应条目路径,不加前面的计算机三个字]" /v "[需要修改的变量名]" /t REG_SZ /d "[想要修改成的值]" /f>nul

/v 指定修改的注册表变量名
/t 指定修改的数据类型
/d 指定想要修改成的数值
/f 不用询问信息而直接添加子项或项,且/f>nul输出为null

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit" /v "CurrentVersion" /t REG_SZ /d "1.8" /f>nul



最终将java16修改成java8环境的bat脚本:

del "C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe"
del "C:\Program Files (x86)\Common Files\Oracle\Java\javapath\javaw.exe"
del "C:\Program Files (x86)\Common Files\Oracle\Java\javapath\javaws.exe" 

del "C:\Program Files\Common Files\Oracle\Java\javapath\java.exe"
del "C:\Program Files\Common Files\Oracle\Java\javapath\javac.exe"
del "C:\Program Files\Common Files\Oracle\Java\javapath\javaw.exe"
del "C:\Program Files\Common Files\Oracle\Java\javapath\jshell.exe" 

copy "D:\java JKD\jdk1.8\bin\java.exe" "C:\Program Files (x86)\Common Files\Oracle\Java\javapath"
copy "D:\java JKD\jdk1.8\bin\javaw.exe" "C:\Program Files (x86)\Common Files\Oracle\Java\javapath"
copy "D:\java JKD\jdk1.8\bin\javaws.exe" "C:\Program Files (x86)\Common Files\Oracle\Java\javapath"

copy "D:\java JKD\jdk1.8\bin\java.exe" "C:\Program Files\Common Files\Oracle\Java\javapath"
copy "D:\java JKD\jdk1.8\bin\javac.exe" "C:\Program Files\Common Files\Oracle\Java\javapath"
copy "D:\java JKD\jdk1.8\bin\javaw.exe" "C:\Program Files\Common Files\Oracle\Java\javapath"

wmic ENVIRONMENT where "name='JAVA_HOME' and username='<system>'" set VariableValue="D:\java JKD\jdk1.8"  
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit" /v "CurrentVersion" /t REG_SZ /d "1.8" /f>nul

右键管理员权限运行即可成功修改。

顺便贴一下将1.8修改成16版本的批处理脚本:

del "C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe"
del "C:\Program Files (x86)\Common Files\Oracle\Java\javapath\javaw.exe"
del "C:\Program Files (x86)\Common Files\Oracle\Java\javapath\javaws.exe" 

del "C:\Program Files\Common Files\Oracle\Java\javapath\java.exe"
del "C:\Program Files\Common Files\Oracle\Java\javapath\javac.exe"
del "C:\Program Files\Common Files\Oracle\Java\javapath\javaw.exe"
del "C:\Program Files\Common Files\Oracle\Java\javapath\jshell.exe"

copy "D:\java JKD\history_version_package\jdk16\win\jdk-16\bin\java.exe" "C:\Program Files (x86)\Common Files\Oracle\Java\javapath"
copy "D:\java JKD\history_version_package\jdk16\win\jdk-16\bin\javaw.exe" "C:\Program Files (x86)\Common Files\Oracle\Java\javapath"

copy "D:\java JKD\history_version_package\jdk16\win\jdk-16\bin\javaw.exe" "C:\Program Files\Common Files\Oracle\Java\javapath"
copy "D:\java JKD\history_version_package\jdk16\win\jdk-16\bin\java.exe" "C:\Program Files\Common Files\Oracle\Java\javapath"
copy "D:\java JKD\history_version_package\jdk16\win\jdk-16\bin\javac.exe" "C:\Program Files\Common Files\Oracle\Java\javapath"
copy "D:\java JKD\history_version_package\jdk16\win\jdk-16\bin\jshell.exe" "C:\Program Files\Common Files\Oracle\Java\javapath"
wmic ENVIRONMENT where "name='JAVA_HOME' and username='<system>'" set VariableValue="D:\java JKD\history_version_package\jdk16\win\jdk-16"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit" /v "CurrentVersion" /t REG_SZ /d "1.16" /f>nul

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Deeeelete

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值