懒人必备!Windows上实现一键快速切换JDK

懒人必备!Windows上实现JDK快速切换脚本

很多同学用过 Node 的 nvm:一句
nvm use 18
,Node 版本就切好了。
同理,Java 的 JDK 完全可以像这样“随叫随到”。我做了两个轻量脚本,统一命令叫
jvm
,在 Windows 上即可 一秒切换 JDK


jvm.cmd
:面向 CMD 的版本(当前窗口立即生效)
jvm.ps1
:面向 PowerShell 的版本(当前会话立即生效)


功能一览(两版命令保持一致)


jvm use 17             # 当前终端/会话立刻切到 JDK 17
jvm use 17 --global    # 持久写“用户”环境变量(新开终端后生效)
jvm use 17 --system    # 持久写“系统”环境变量(需管理员)
jvm open 8             # 新开一个已切到 JDK 8 的 cmd 窗口
jvm current            # 查看当前 JAVA_HOME & java -version
jvm ls                 # 列出映射的 JDK 版本与安装情况
jvm path install       # 将脚本目录加入 PATH(可加 --system / -System)


--global
/
--system
只负责“默认值”的持久化;当前窗口是否马上生效,取决于
use
(这两个脚本都支持“立即生效”)。


安装(建议 2 分钟完成)

1)准备好 JDK 目录

脚本默认映射如下(可按需改):


D:JDKSdragonwell-21
D:JDKSdragonwell-17
D:JDKSTencentKona    # JDK 11
D:JDKSdragonwell8    # JDK  8

修改脚本开头的映射即可适配你的目录结构。

2)把脚本放进工具目录并加入 PATH

建议目录:
D:Tools
CMD 版:保存为
D:Toolsjvm.cmd
PowerShell 版:保存为
D:Toolsjvm.ps1


D:Tools
加入 PATH(或先运行一次下面的命令):


# 允许执行当前用户脚本(PowerShell 只需设置一次)
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

# 用脚本自带命令把所在目录加入 PATH(用户级)
# 在 CMD 中:  jvm path install
# 在 PS 中:   .jvm.ps1 path install

PowerShell 小优化(可选):在
$PROFILE
里加个函数,之后就能直接敲
jvm
了:


Add-Content $PROFILE "function jvm { & 'D:Toolsjvm.ps1' @args }"
. $PROFILE

快速上手


# 切到 JDK 17(当前窗口立刻生效)
jvm use 17
java -version

# 设置“默认 JDK”为 21(用户级,之后新开的窗口默认为 21)
jvm use 21 --global

# 系统级持久化(需要“以管理员身份”打开终端)
jvm use 11 --system

# 新开一个已切换好的窗口(不影响当前窗口)
jvm open 8

# 查看当前状态
jvm current
jvm ls

和 nvm 的相似/不同点

同样的“当前会话立即生效”体验
use
之后立刻生效。✅ 多版本共存:脚本会清理 PATH 里的旧 JDK bin,再把目标版本的 bin 前置,避免混用。✅ 可选持久化
--global
(用户级)、
--system
(系统级,需管理员)。🔁 IDE/已有进程不会自动刷新环境:和 nvm 一样,已打开的终端/IDE 要新开/重启才会读取新的默认环境变量。


常见问题(FAQ)

Q:CMD 和 PowerShell 都放
jvm
会不会冲突?

A:不会。在 CMD 里优先执行
jvm.cmd
;在 PowerShell 里若你加了上面的函数,就会优先执行
jvm.ps1
。想明确调用某一版,写全名:
jvm.cmd

jvm.ps1

Q:
--system
报“Not running as Administrator”?

A:系统级写注册表需要管理员。右键“以管理员身份运行”终端,再执行即可。
(或改用
--global
写用户级,通常已经足够。)

Q:切换了还是旧版本?
A:多半是另一个进程(某些启动器/IDE)在 PATH 前面塞了个自己带的 JDK。先在纯 CMD/PS 里测试;必要时查看
where java
/
Get-Command java
确认命中的路径。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容