前言:
先来说明一下个人计算机上的一些情况,个人笔记本上最开始安装的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

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

  1. 基于windows10下使用bat脚本设置自定义开机启动项

    基于windows10下使用bat脚本设置自定义开机启动项 一.新建一个txt文件,然后写入内容,再重新命名修改文件成.bat脚本.博主举例新建一个rothschildlhl.txt空文本,然后复制下 ...

  2. Windows下bat批处理脚本常用场景整理,持续更新中。。。

    Windows下bat批处理脚本常用场景整理,持续更新中... 一.Winodws下使用bat脚本对结果进行筛选 例如:在筛选出来的结果中,筛选是否有"$G"字段 adb shel ...

  3. flash cs3 pro 写了脚本说java运行环境出错,Flash CS3动作面板打开出错[Java运行时环境初始化时出现错误,你可能需要重......

    为了携带和使用方便,大多数人会选择使用软件的精简版,首先要感谢那些制作精简版软件的作者,因为这类软件一般不用安装,直接就能使用,而且体积一般只有 100MB左右.不过,正因为精简版精简了很多被认为是& ...

  4. 转】windows下使用批处理脚本实现多个版本的JDK切换

    原博文出自于: http://www.cnblogs.com/xdp-gacl/p/5209386.html 感谢! 一.JDK版本切换批处理脚本 我们平时在window上做开发的时候,可能需要同时开 ...

  5. Windows 下的批处理脚本基础——批处理运算操作(代码可拿)

      自从优盘中毒,就开始发现学习批处理脚本的重要性.一起加油冲冲冲!!! https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩 ...

  6. Windows 下的批处理脚本基础——网络相关命令(用户操作命令、用户组操作命令)

    自从优盘中毒,就开始发现学习批处理脚本的重要性.一起加油冲冲冲!!! 干正事!!! 目录 用户操作命令 查看用户帮助信息 查看用户详细帮助信息 查看用户详细信息 查看用户账户 删除用户 创建用户 用户 ...

  7. windows10下使用virtualenv虚拟技术,管理多个python版本,多个项目包环境

    windows10下使用virtualenv虚拟技术,管理多个python解释器版本,多个项目包环境 文章目录 windows10下使用virtualenv虚拟技术,管理多个python解释器版本,多 ...

  8. EasyNVR摄像机H5流媒体服务器在windows上批处理脚本自动以管理员权限运行

    很多时候, 我们需要以管理员权限来运行批处理脚本, 比如操作 windows 服务. EasyNVR 中提供安装服务的批处理脚本, 运行这个bat文件, 自动将 EasyNVR 以 windows 服 ...

  9. Windows下通过CMD脚本更改环境变量并马上生效

    以JAVA_HOME的设置为例. 开发中可能遇到手头开发的两个项目使用的JDK版本不一样的情况, 这个时候需要更换JAVA_HOME的路径. 而Windows修改环境变量出奇的麻烦(系统->-) ...

最新文章

  1. int.TryParse非预期执行引发的思考 ASP.NET -- WebForm -- 给图片添加水印标记 Windows -- 使用批处理文件.bat删除旧文件...
  2. mysql maximum idle_MySQL的MaxIdleConns不合理,会变成短连接的原因
  3. boost::asio::deadline_timer(理解)
  4. fiddler响应中文乱码问题
  5. 迅雷下载的种子文件后坠总是php,我的迅雷怎么不能下载呀,总是显示在连接种子文件...
  6. java 中常见的文件上传方式_java中如何上传文件
  7. Android资源代码 源码 整理 Github开源项目下载地址
  8. Windows内核原理与实现之Windows设备驱动程序
  9. 让物联网为“中国制造”插上腾飞的翅膀
  10. Java中的正则表达式 regex
  11. 教你如何编写游戏外挂
  12. 3译码器与半加器的学习
  13. 复利/单利计算程序进度
  14. 基于以太坊的区块链浏览器搭建
  15. JavaScript 文件下载解决方案-download.js
  16. aria2-linux
  17. Hilary Stagg 不死传说
  18. 什么?你还不知道 Word 批量转 PDF?python来教你
  19. python批量解密PDF文件
  20. Qt(C++)项目中使用 Basler 工业相机(2 参数设置)

热门文章

  1. 【soft6星评论】三星折叠屏这下真的要“折”了?
  2. 人类为什么要努力工作
  3. 从今天开始后续记录自己的前端成长记录
  4. 【QNX Hypervisor 2.2 用户手册】4.5.1 构建QNX Guest
  5. 与旷视共同寻找小微商业的智能零售解决方案|白洞战报
  6. 重新启动计算机前控制台无法刷新,重新安装.NET framework 3.5以准备Websense安装
  7. 【读论文】点云信息提取研究进展和展望(2017)
  8. 【opencv450-samples】旅行商问题(模拟退火算法Simulated Annealing,SA)
  9. Python输出换行的两种方法
  10. 牛逼的文案,个个都是金句,爆款的文章,一定会有几个金句。好看的文案,一定有一个金句。...