[特殊字符] Windows 没有 SDKMAN?我们给你一个更强的!

Windows 没有 SDKMAN?我们给你一个更强的!

用 Scoop 优雅安装并切换多个 Java 版本(附自动设置 JAVA_HOME 脚本)

你是不是也曾羡慕过 Linux 和 macOS 上的 SDKMAN 工具,一行命令就能安装并切换多个 JDK 版本?
可惜 Windows 上没有它……

别急,现在我们用 Scoop + PowerShell 脚本,给你一个 Windows 上更强的 SDK 管理体验!


今天这篇文章,我将手把手教你:

在 Windows 系统上进行 Java 环境配置,尤其是需要频繁切换不同版本的 JDK 时,很多开发者会觉得痛苦不堪:环境变量难维护、IDE 检测不到 JDK、命令行版本混乱……

今天我分享一个完整的解决方案:用 Scoop 快速安装 Java 和 Maven,并实现一键切换 Java 版本,自动更新 JAVA_HOME 和 PATH!

✅ 适用于所有 Java 开发者,特别是需要频繁在 Java 8 / 11 / 17 之间切换的同学。

✅ 用 Scoop 安装 Java 8 / 11 / 17
✅ 一键切换 Java 版本,并自动更新 JAVA_HOMEPATH
✅ 让 IDE、命令行、Maven 都能同步使用正确版本
✅ 打造属于 Windows 用户的“SDKMAN 脚本工具”!

一、安装 Scoop(包管理器)

确保你有管理员权限,打开 PowerShell,执行以下命令:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force; iwr -useb get.scoop.sh -outfile 'install.ps1'; .\install.ps1 -RunAsAdmin

场景对比:

  • 没有 Scoop:每次安装 JDK 都要手动下载 zip/exe,配置环境变量,容易出错。
  • 有 Scoop:一句命令解决下载、安装和路径配置,秒级切换版本。

二、添加 Scoop 软件源

scoop bucket add java
scoop bucket add extras
scoop bucket add versions

☕ 三、安装 Java 和 Maven

scoop install temurin8-jdk maven

安装完毕后验证:

java -version
mvn -v

输出示例:

openjdk version "1.8.0_452"
Apache Maven 3.9.10

四、安装更多 Java 版本(可选)

scoop install temurin11-jdk
scoop install temurin17-jdk

五、切换 Java 版本(仅 Scoop 自带方式)

scoop reset temurin8-jdk

⚠️ 但是这样 并不会自动更新 JAVA_HOME 和 PATH,很多工具(如 IDE 或命令行工具)依然识别不到你当前切换的 Java 版本。


六、自动同步 JAVA_HOME 的脚本工具

让我们创建一个 Switch-Java 函数,实现:

  • 切换 Scoop 中的 Java 版本
  • 自动更新 JAVA_HOME 环境变量
  • 自动更新 PATH(优雅移除旧路径)
  • 显示当前 Java 信息

✅ 配置步骤:

  1. 创建配置文件目录(如尚未存在):
New-Item -Path $env:USERPROFILE\Documents\WindowsPowerShell -ItemType Directory -Force
  1. 将以下函数写入 PowerShell 启动脚本中:
notepad $PROFILE

粘贴以下代码:

function Switch-Java {
    param (
        [string]$Version
    )
    
    if (-not $Version) {
        Write-Host "可用的 Java 版本如下:"
        scoop list | Select-String "jdk"
        return
    }

    scoop reset $Version

    $javaPath = "$env:USERPROFILE\scoop\apps\$Version\current"
    [System.Environment]::SetEnvironmentVariable('JAVA_HOME', $javaPath, 'User')
    $env:JAVA_HOME = $javaPath

    $newPath = [System.Environment]::GetEnvironmentVariable('Path', 'User')
    $newPath = ($newPath -split ';' | Where-Object { $_ -notmatch 'jdk.*\\bin' }) -join ';'
    $newPath = "$newPath;$javaPath\bin"
    [System.Environment]::SetEnvironmentVariable('Path', $newPath, 'User')
    $env:Path = [System.Environment]::GetEnvironmentVariable('Path', 'Machine') + ';' + $newPath

    Write-Host "`nJava 版本切换成功:"
    java -version
    Write-Host "`nJAVA_HOME 已更新为:$env:JAVA_HOME"
}

Set-Alias -Name jdk -Value Switch-Java
  1. 保存后重启 PowerShell 或执行:
. $PROFILE

七、使用方法

查看当前已安装的 Java:

jdk

切换版本:

jdk temurin8-jdk
jdk temurin11-jdk
jdk temurin17-jdk

总结:为什么推荐这种方式?

场景 传统方式 Scoop + 脚本方式 ✅
安装 JDK 下载 ZIP,手动解压 + 配置 一句命令完成安装
切换版本 手动改 JAVA_HOME + PATH jdk 版本名 一键切换
IDE 检测版本 需要手动添加 SDK 路径 自动更新 JAVA_HOME
版本管理 无法共存多个版本 多版本共存,按需切换
重复性劳动 极低(脚本自动化处理)

结语

这是我个人在日常开发中反复踩坑后总结出的 Java 多版本管理方案。推荐大家搭配 IntelliJ IDEA 使用,完美支持 SDK 自动识别切换。

欢迎在评论区分享你的 Java 环境管理技巧,也欢迎点赞、收藏、转发支持我 。

如果你对 PowerShell 脚本优化 或者 多语言开发环境管理 也感兴趣,欢迎关注我,我会持续分享更多开发提效技巧!

你可能感兴趣的:(windows,sdkman)