Windows中不同JDK版本的切换

新手上路,请多包涵

我正在处理几个项目,其中一些正在使用不同的 JDK。在 JDK 版本之间切换并不方便。所以我想知道是否有任何简单的方法可以更改它?

我找到了 2 种方法,应该可以解决这个问题,但它不起作用。

第一个解决方案是创建一个像这样的 bat 文件:

 @echo off
echo Setting JAVA_HOME
set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_72
echo setting PATH
set PATH=C:\Program Files\Java\jdk1.7.0_72\bin;%PATH%
echo Display java version
java -version
pause

在运行这个 bat 之后,我看到了正确的 Java 版本。但是当我关闭这个 CMD 并打开一个新的并输入“java -version”时,它说我仍然有 1.8.0_25。所以它不起作用。

我找到的第二个解决方案是来自 站点的应用程序。而且它也不起作用。与第一个解决方案中的效果相同。

有任何想法吗?因为通过以下方式更改 JAVA_HOME 和 PAHT:Win + Pause -> Advanced System Settings -> Environment Variables -> 并编辑这些变量,这是一种糟糕的方式……

原文由 Lui 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 830
2 个回答

set 命令仅适用于当前终端。要永久设置系统或用户环境变量,您可以使用 setx

 setx JAVA_HOME "C:\Program Files\Java\jdk1.7.0_72" /m

/m 选项用于设置变量系统范围(而不仅仅是当前用户)。终端必须以管理员身份运行才能使用此选项。

该变量将在所有新终端窗口中可用,但在当前窗口中不可用。如果您还想在同一窗口中使用路径,则需要同时使用 setsetx

您可以避免操纵 PATH 变量,如果您只将 %JAVA_HOME% 放在那里,而不是完整的 JDK 路径。如果您更改 JAVA_HOMEPATH 也会更新。


还有一些环境变量编辑器可以替代繁琐的 Windows 环境变量设置。请参阅超级用户上的“ 在 Windows 7 中编辑 PATH 有方便的方法吗? ”。

原文由 kapex 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果有人想在每个新命令窗口中频繁切换,那么我将使用以下方法。

命令提示符版本:

使用以下代码创建批处理文件。您可以使用 if 和 else 块添加 n 个版本。

 @echo off
if "%~1" == "11" (
   set "JAVA_HOME=C:\Software\openjdk-11+28_windows-x64_bin\jdk-11"
) else (
   set "JAVA_HOME=C:\Program Files\Java\jdk1.8.0_151"
)
set "Path=%JAVA_HOME%\bin;%Path%"
java -version

将此批处理文件另存为 SJV.bat 并将此文件位置添加到计算机的 Path 环境变量中。所以现在 SJV 将充当“切换 Java 版本”的命令。

现在打开新的命令窗口,只需键入 SJV 11 它将切换到 Java 11。键入 SJV 8 它将切换到 Java 8。

PowerShell 版本

使用以下代码创建 powershell(ps1) 文件。您可以使用 if 和 else 块添加 n 个版本。

 If($args[0] -eq "11")
{
    $env:JAVA_HOME = 'C:\Software\openjdk-11+28_windows-x64_bin\jdk-11'
}else{
    $env:JAVA_HOME = 'C:\Program Files\Java\jdk1.8.0_151'
}
$env:Path = $env:JAVA_HOME+'\bin;'+$env:Path
java -version

将此脚本文件另存为 SJV.ps1 并将此文件位置添加到计算机的 Path 环境变量中。所以现在 SJV 将充当“切换 Java 版本”的命令。

现在打开新的 powershell 窗口,只需键入 SJV 11 它将切换到 Java 11。键入 SJV 8SJV 它将切换到 Java– 8。

我希望这对想要经常更改它的人有所帮助。

原文由 Prakash Boda 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题