您的当前位置:首页>全部文章>文章详情

windows安装多版本JAVA

发表于:2026-10-21 14:19:00浏览:6次TAG: #JAVA

在 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  扩展