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.

欢迎指正!!!!!

相关推荐
2501_9418024813 小时前
从缓存更新到数据一致性的互联网工程语法实践与多语言探索
java·后端·spring
钱多多_qdd13 小时前
springboot注解(五)
java·spring boot·后端
IT_陈寒14 小时前
React 18实战:这5个新特性让我的开发效率提升了40%
前端·人工智能·后端
a努力。14 小时前
京东Java面试被问:双亲委派模型被破坏的场景和原理
java·开发语言·后端·python·面试·linq
不如打代码KK14 小时前
Springboot如何解决跨域问题?
java·spring boot·后端
加洛斯15 小时前
SpringSecurity入门篇(1)
后端·架构
一 乐16 小时前
餐厅点餐|基于springboot + vue餐厅点餐系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端
用户938169125536016 小时前
Head First 单例模式
后端·设计模式
半夏知半秋16 小时前
rust学习-循环
开发语言·笔记·后端·学习·rust
爬山算法16 小时前
Hibernate(25)Hibernate的批量操作是什么?
java·后端·hibernate