分享一个 PowerShell 脚本,用于在 Windows 系统安装了多个 Java 版本时,快速切换环境变量中的 Java 版本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process PowerShell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs exit }
Write-Host "=== Java 版本切换工具 ===" -ForegroundColor Green Write-Host "1. Java 8" Write-Host "2. Java 17 (Flutter 推荐)" Write-Host "3. Java 21" Write-Host ""
$choice = Read-Host "请选择 Java 版本 (1-3)"
$javaPaths = @{ '1' = 'C:\Program Files\Java\jdk1.8.0_202' '2' = 'C:\Program Files\Java\jdk-17' '3' = 'C:\Program Files\Java\jdk-21' }
if ($javaPaths.ContainsKey($choice)) { $javaHome = $javaPaths[$choice] [System.Environment]::SetEnvironmentVariable('JAVA_HOME', $javaHome, [System.EnvironmentVariableTarget]::Machine) [System.Environment]::SetEnvironmentVariable('JAVA_HOME', $javaHome, [System.EnvironmentVariableTarget]::User) $oldPath = [System.Environment]::GetEnvironmentVariable('PATH', [System.EnvironmentVariableTarget]::Machine) $newPath = $javaHome + '\bin;' + $oldPath [System.Environment]::SetEnvironmentVariable('PATH', $newPath, [System.EnvironmentVariableTarget]::Machine) Write-Host "已切换到 Java $choice" -ForegroundColor Green Write-Host "JAVA_HOME: $javaHome" -ForegroundColor Yellow & "$javaHome\bin\java.exe" -version Write-Host "请重启所有命令窗口和IDE使更改生效!" -ForegroundColor Red } else { Write-Host "无效选择!" -ForegroundColor Red }
Read-Host "按回车键退出"
|
如何保存脚本
- 新建目录用于存放脚本,例如
C:\Tools - 使用任意文本编辑器将上面的内容保存为
java-switch.ps1(注意扩展名为 .ps1,保存为 UTF-8) - 如需自定义版本路径,编辑文中的
$javaPaths 映射:source/_posts/Windows下切换Java版本的PowerShell脚本.md:31-35
示例:如果你的 JDK 安装在 D:\Java\jdk-17.0.12,可将 '2' 的路径改为 D:\Java\jdk-17.0.12。
使用方法
以管理员权限运行 PowerShell(脚本会自动请求管理员权限)
运行脚本:
1
| powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Tools\java-switch.ps1"
|
根据提示输入 1、2 或 3 进行切换;例如 Flutter 推荐选择 2(Java 17)
切换完成后脚本会显示当前 JAVA_HOME 并执行 java -version 进行验证
重启所有命令行窗口和 IDE 使更改生效
注意事项
请确保 $javaPaths 中的路径真实存在,否则验证会失败
脚本会设置系统级与用户级 JAVA_HOME,并将对应 bin 目录置于系统 PATH 开头
如果此前 PATH 中已有多个 Java 的 bin,可能重复;必要时到系统“环境变量”中清理旧项
如遇到执行策略限制,使用 -ExecutionPolicy Bypass(如上命令)或执行:
1
| Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
|