windows安装多版本JAVA
发表于:2026-10-21 14:19:00浏览:6次
在 PowerShell 运行
winget install jabba-team.jabba
winget 是微软官方包管理器,国内网络稳定性好很多,安装完同样新开终端执行
jabba --version校验
✅ 关闭当前 PowerShell,新开一个窗口,环境变量才会加载
✅ 验证:jabba --version
✅ 基础使用(装好之后)
# 列出远程可装jdk 国内环境可能拉取失败 改为直接本地导入
jabba ls-remote
# 安装 adoptopenjdk8
jabba install adopt@1.8.0-412
# 本地已经有jdk,导入给jabba管理
jabba link system@1.8 "C:\jdk1.8.0_412"
# 切换当前终端jdk
jabba use adopt@1.8.0-412
# 设置默认jdk(新开终端自动use)
jabba alias default adopt@1.8.0-412
# 查看已安装
jabba ls
jabba ls-remote 拉取失败问题改为本地导入
默认索引地址:
https://raw.githubusercontent.com/shyiko/jabba/master/index.json
国内镜像:https://mirrors.tuna.tsinghua.edu.cn/Adoptium/
- Windows x64 选
.zip包,不要 exe 安装版 - 比如:jdk8、jdk11、jdk17
在 PowerShell 执行 link 命令注册给 jabba:
jabba link system@1.7.0 "D:\jdk\jdk17"
补充说明: jabba 的 link 子命令是专门用来导入本地已存在的 JDK,统一归类到
system@这个命名空间下,在线安装的才是 adopt@ /temurin@ 这种前缀。如果绑定错了,可以通过
jabba unlink system@1.7.0解除绑定
# 查看本地列表
jabba ls
# 切换
jabba use system@1.7.0
# 设置默认 这里不起作用 改为文件控制
jabba alias default system@1.7.0
使用文件控制java版本
在项目目录添加 .jabbarc 文件,内容如下:
# 这里的值是 jabba ls 里面的值
system@17.0.0
然后在 C:\Users\Administrator\.bashrc 改为
# 保存初始PATH,只在shell启动时执行一次
ORIG_PATH="$PATH"
# Windows Git Bash 自动读取 .nvmrc 并切换 node 版本
auto-nvm-use() {
if [ -f ".nvmrc" ]; then
local version=$(cat .nvmrc | tr -d '[:space:]')
if [ -n "$version" ]; then
echo "[nvm] 自动切换到 Node.js v$version"
nvm use $version
fi
fi
}
# Git Bash 自动读取 .jabbarc 切换 Java 版本(干净PATH版本)
auto-jabba-use() {
if [ -f ".jabbarc" ]; then
local jdk_version=$(cat .jabbarc | tr -d '[:space:]')
if [ -n "$jdk_version" ]; then
echo "[jabba] 自动切换到 Java $jdk_version"
local jdk_root="/c/Users/Administrator/.jabba/jdk/$jdk_version"
if [ -d "$jdk_root" ]; then
export JAVA_HOME="$jdk_root"
# 每次从原始PATH重建,避免PATH堆积
export PATH="$jdk_root/bin:$ORIG_PATH"
else
echo "[jabba] 警告:找不到目录 $jdk_root"
fi
fi
else
# 当前目录没有.jabbarc,恢复原始PATH,清空java版本
export PATH="$ORIG_PATH"
unset JAVA_HOME
fi
}
cd() { builtin cd "$@" && auto-nvm-use && auto-jabba-use; }
以上包含node的自动切换,如果没有node 可以去掉部分代码
这样每次切换文件夹就能自动切换java版本了
然后VSCode安装 Extension Pack for Java 扩展
