简介
心得写在这里,在Windows系统中打开某些软件,经常遇到Java环境不兼容的问题,此时需要切换不同的jdk版本(jdk具体版本的下载可自行百度)。本文将从【jdk版本切换本质】、【bat脚本快速切换jdk版本】、【jdk版本切换失败原因分析及解决】三个方面透彻解决jdk版本切换所有问题。图示(不同软件的错误提示可能不同):
一、 JDK版本切换本质
Ⅰ、快速通道:
如果已经知道了JDK版本切换的本质,那么直接跳至【二、bat脚本快速切换jdk版本】拿bat脚本即可(记得点赞转发谢谢)
Ⅱ、本质
JDK版本切换的本质是更改操作系统中Java开发工具和运行时环境的引用路径,即【修改环境变量】,特别是JAVA_HOME
和PATH
变量,以指向不同版本的Java Development Kit (JDK)。当你在终端或命令提示符中执行Java程序或使用Java开发工具(如javac
)时,系统将根据这些环境变量决定使用哪个版本的JDK。
Ⅲ、检查环境变量
为了演示JDK的版本切换,我在电脑上安装的两个不同版本的JDK,分别是jdk1.8.0_181和jdk11.0.10,当然你也可以安装其他自己需要的版本,此时我们打开【系统属性-环境变量】来检查一下。
以我的系统环境为例,红框中的变量是我要检查的变量,可以看到有三个变量,分别是JAVA_HOME、JAVA1.8_HOME、JAVA11_HOME,其中JAVA_HOME变量在Path变量中被定义,JAVA11_HOME下添加的值(路径)为引用JDK不同版本的根目录,其他两个变量指向了不同的JDK版本的根目录。上图可以看出,我当前的环境引用的JDK版本是jdk1.8.0_181。也就是说你要切换什么版本的JDK,那么JAVA_HOME变量的值就改为你要切换的那个JDK版本的根目录。
PS:如果已经安装了JDK,但环境变量中没有,则可自行添加,变量名称命名方法参照上图,值为路径,路径为JDK根目录。
二、bat脚本快速切换jdk版本
Ⅰ、贴脸开大(bat脚本)
请注意脚本中我写的中文提示需要删除
将以下代码复制到本地txt文档,修改完毕后保存,将.txt扩展名改为.bat
@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"
echo Current Java Version:
java -version
echo.
echo.
echo.
:menu
echo =============================================
echo choose jdk version
echo 1: jdk-1.8.0_181(你的版本)
echo 2: jdk-11.0.10(你的版本)
echo 0: cancel
echo =============================================
set /p ch=choose version:
if "%ch%"=="1" goto jdk-1.8.0_181
if "%ch%"=="2" goto jdk-11.0.10
if "%ch%"=="0" goto end
goto menu
:jdk-1.8.0_181(对应你的版本)
setx "JAVA_HOME" "C:\你的路径\Java\jdk1.8.0_181" /m
goto end
:jdk-11.0.10(对应你的版本)
setx "JAVA_HOME" "C:\你的路径\Java\jdk11.0.10" /m
goto end
:end
pause
Ⅱ、效果演示
运行脚本后可以看到,第一段为当前系统环境的JDK版本是多少,第二段是当前你能选择的JDK版本有哪些,第三段为你选择要切换哪个JDK版本,选择后回车即可。win+R再打开一个cmd窗口,输入java -version即可查看当前系统环境的版本。一定要注意:每次检查java版本都要新打开一个cmd窗口。
请多尝试切换几次,每次都查看当前系统环境的版本,如果与自己选的相同,则说明脚本生效。
如果无论如何切换,版本依然没有切换,请看【三、jdk版本切换失败原因分析及解决】。
三、jdk版本切换失败原因分析及解决
一定要记得我在开篇【一、JDK版本切换本质】讲到的,本质是什么。
当通过bat脚本切换失败后请不要着急,注意检查以下几个点:
1.打开环境变量,看JAVA_HOME变量的值,是否每次执行bat脚本切换,JAVA_HOME变量的值都会随之改变为你要切换的JDK版本的文件根目录。如果不是请检查bat脚本是否编写正确。
2.检查【系统变量】中的Path变量的值是否有
%JAVA_HOME%\bin
如果没有,请直接复制添加。
3.检查%JAVA_HOME%\bin这个值优先级是否在"...Oracle\Java\javapath"值,如果不是,请自行上移,如下图所示位置即可: