win环境下,同时安装多个版本jdk,并自由切换(jdk8和jdk17为例)

  1. 下载

    进入[Oracle官网](Java Downloads | Oracle),下载需要安装的jdk版本;

  2. 安装

    点击下载好的jdk安装文件,进行安装,这里以jdk8和jdk17为例;安装完成后,在对应安装目录下,可以看到以下文件夹,(注意将两个版本安装到不同的目录);

  1. 配置环境变量

    此电脑 -> 右键 -> 属性 -> 高级系统设置 -> 环境变量

(1)新建环境变量:

(2)修改环境变量: 找到环境变量Path,点击编辑,加入JAVA_HOME引用

确定,保存,验证环境变量是否配置成功

  1. 版本切换

    (1)手动切换:

    修改环境变量中JAVA_HOME的变量值,修改为需要切换的jdk版本的安装路径,如:

    需要修改为jdk8,则修改为:C:\Program Files\Java\jdk1.8.0_212

    需要修改为jdk17,则修改为:C:\Program Files\Java\jdk-17

    确认,保存,验证是否切换成功。

(2)脚本自动切换:

新建switch_jdk.bat文件,加入以下脚本内容:

bash 复制代码
@echo off
set /p choice="Enter JDK version (8 or 17): "
if "%choice%"=="8" (
    setx JAVA_HOME "C:\Program Files\Java\jdk1.8.0_212" /m
    echo Switched to JDK 8
) else if "%choice%"=="17" (
    setx JAVA_HOME "C:\Program Files\Java\jdk-17" /m
    echo Switched to JDK 17
)
echo Restart CMD or terminals to apply changes.

以管理员身份运行 脚本,输入版本号即可切换。

  1. 注意事项

(1)切换完成后,需要重启或重新打开一个cmd窗口,验证是否切换成功;

(2)一定要以管理员身份运行该脚本,否则切换失败。

  1. 补充

若嫌弃每次都以管理员身份打开太麻烦,则可以在脚本中加入以下代码片段:

bash 复制代码
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo Requesting administrative privileges...
    powershell -Command "Start-Process cmd -ArgumentList '/c %~f0' -Verb RunAs"
    exit /b
)

作用是,验证当前是否有管理员权限,若没有,则重新以管理员身份打开此脚本。

所以,最终脚本内容为:

bash 复制代码
@echo off
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo Requesting administrative privileges...
    powershell -Command "Start-Process cmd -ArgumentList '/c %~f0' -Verb RunAs"
    exit /b
)
set /p choice="Enter JDK version (8 or 17): "
if "%choice%"=="8" (
    setx JAVA_HOME "C:\Program Files\Java\jdk1.8.0_212" /m
    echo Switched to JDK 8
) else if "%choice%"=="17" (
    setx JAVA_HOME "C:\Program Files\Java\jdk-17" /m
    echo Switched to JDK 17
)
echo Restart CMD or terminals to apply changes.

欢迎指正!!!!!

相关推荐
Code blocks29 分钟前
关于“LoggerFactory is not a Logback LoggerContext but Logback is on ......“的解决方案
java·spring boot·后端
04Koi.3 小时前
八股训练--Spring
java·后端·spring
Livingbody5 小时前
【心理咨询师数字孪生对话数据集】标准化为 ShareGPT OpenAI 格式
后端
AQin10126 小时前
IP 🆚 MAC,你分得清吗?
后端·网络协议
天涯学馆7 小时前
Solidity 中的高级模式匹配:提升代码的可读性和可维护性
后端·区块链·solidity
郝学胜-神的一滴7 小时前
Spring Boot Actuator 保姆级教程
java·开发语言·spring boot·后端·程序人生
剪刀石头布啊7 小时前
数据口径
前端·后端·程序员
剪刀石头布啊8 小时前
http状态码大全
前端·后端·程序员
jiangxia_10248 小时前
面试系列:什么是JAVA并发编程中的JUC并发工具类
java·后端
用户1512905452208 小时前
踩坑与成长:WordPress、MyBatis-Plus 及前端依赖问题解决记录
前端·后端