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
Windows10下使用批处理脚本更改jdk以及java运行时版本相关推荐
- 基于windows10下使用bat脚本设置自定义开机启动项
基于windows10下使用bat脚本设置自定义开机启动项 一.新建一个txt文件,然后写入内容,再重新命名修改文件成.bat脚本.博主举例新建一个rothschildlhl.txt空文本,然后复制下 ...
- Windows下bat批处理脚本常用场景整理,持续更新中。。。
Windows下bat批处理脚本常用场景整理,持续更新中... 一.Winodws下使用bat脚本对结果进行筛选 例如:在筛选出来的结果中,筛选是否有"$G"字段 adb shel ...
- flash cs3 pro 写了脚本说java运行环境出错,Flash CS3动作面板打开出错[Java运行时环境初始化时出现错误,你可能需要重......
为了携带和使用方便,大多数人会选择使用软件的精简版,首先要感谢那些制作精简版软件的作者,因为这类软件一般不用安装,直接就能使用,而且体积一般只有 100MB左右.不过,正因为精简版精简了很多被认为是& ...
- 转】windows下使用批处理脚本实现多个版本的JDK切换
原博文出自于: http://www.cnblogs.com/xdp-gacl/p/5209386.html 感谢! 一.JDK版本切换批处理脚本 我们平时在window上做开发的时候,可能需要同时开 ...
- Windows 下的批处理脚本基础——批处理运算操作(代码可拿)
自从优盘中毒,就开始发现学习批处理脚本的重要性.一起加油冲冲冲!!! https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩 ...
- Windows 下的批处理脚本基础——网络相关命令(用户操作命令、用户组操作命令)
自从优盘中毒,就开始发现学习批处理脚本的重要性.一起加油冲冲冲!!! 干正事!!! 目录 用户操作命令 查看用户帮助信息 查看用户详细帮助信息 查看用户详细信息 查看用户账户 删除用户 创建用户 用户 ...
- windows10下使用virtualenv虚拟技术,管理多个python版本,多个项目包环境
windows10下使用virtualenv虚拟技术,管理多个python解释器版本,多个项目包环境 文章目录 windows10下使用virtualenv虚拟技术,管理多个python解释器版本,多 ...
- EasyNVR摄像机H5流媒体服务器在windows上批处理脚本自动以管理员权限运行
很多时候, 我们需要以管理员权限来运行批处理脚本, 比如操作 windows 服务. EasyNVR 中提供安装服务的批处理脚本, 运行这个bat文件, 自动将 EasyNVR 以 windows 服 ...
- Windows下通过CMD脚本更改环境变量并马上生效
以JAVA_HOME的设置为例. 开发中可能遇到手头开发的两个项目使用的JDK版本不一样的情况, 这个时候需要更换JAVA_HOME的路径. 而Windows修改环境变量出奇的麻烦(系统->-) ...
最新文章
- int.TryParse非预期执行引发的思考 ASP.NET -- WebForm -- 给图片添加水印标记 Windows -- 使用批处理文件.bat删除旧文件...
- mysql maximum idle_MySQL的MaxIdleConns不合理,会变成短连接的原因
- boost::asio::deadline_timer(理解)
- fiddler响应中文乱码问题
- 迅雷下载的种子文件后坠总是php,我的迅雷怎么不能下载呀,总是显示在连接种子文件...
- java 中常见的文件上传方式_java中如何上传文件
- Android资源代码 源码 整理 Github开源项目下载地址
- Windows内核原理与实现之Windows设备驱动程序
- 让物联网为“中国制造”插上腾飞的翅膀
- Java中的正则表达式 regex
- 教你如何编写游戏外挂
- 3译码器与半加器的学习
- 复利/单利计算程序进度
- 基于以太坊的区块链浏览器搭建
- JavaScript 文件下载解决方案-download.js
- aria2-linux
- Hilary Stagg 不死传说
- 什么?你还不知道 Word 批量转 PDF?python来教你
- python批量解密PDF文件
- Qt(C++)项目中使用 Basler 工业相机(2 参数设置)
热门文章
- 【soft6星评论】三星折叠屏这下真的要“折”了?
- 人类为什么要努力工作
- 从今天开始后续记录自己的前端成长记录
- 【QNX Hypervisor 2.2 用户手册】4.5.1 构建QNX Guest
- 与旷视共同寻找小微商业的智能零售解决方案|白洞战报
- 重新启动计算机前控制台无法刷新,重新安装.NET framework 3.5以准备Websense安装
- 【读论文】点云信息提取研究进展和展望(2017)
- 【opencv450-samples】旅行商问题(模拟退火算法Simulated Annealing,SA)
- Python输出换行的两种方法
- 牛逼的文案,个个都是金句,爆款的文章,一定会有几个金句。好看的文案,一定有一个金句。...