在Windows中切换不同的JDK版本

Lui*_*Lui 15 java windows environment-variables

我正在开展几个项目,其中一些正在使用不同的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
Run Code Online (Sandbox Code Playgroud)

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

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

有任何想法吗?因为通过以下方式更改JAVA_HOME和PAHT:Win + Pause - >高级系统设置 - >环境变量 - >并编辑这些变量,这是很糟糕的方式......

kap*_*pex 18

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

setx JAVA_HOME "C:\Program Files\Java\jdk1.7.0_72" /m
Run Code Online (Sandbox Code Playgroud)

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

该变量将在所有新的终端窗口中可用,但不是当前的.如果要在同一窗口中显示路径,则需要同时使用setsetx.

PATH如果您只是放入变量%JAVA_HOME%而不是完整的JDK路径,则可以避免操作变量.如果你改变了JAVA_HOME,PATH也会更新.


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

  • 嗯,出了点问题...我按照你说的做了,它添加了这些变量,但是对于用户...但是当我打开新终端时,我得到的信息是我的 JDK 与我想要的不同... (2认同)

Pra*_*oda 14

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

命令提示符版本:

使用以下代码创建批处理文件。您可以使用 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
Run Code Online (Sandbox Code Playgroud)

将此批处理文件另存为 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
Run Code Online (Sandbox Code Playgroud)

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

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

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


Lu5*_*u55 11

  1. 打开Environment Variables编辑器(文件资源管理器>右键单击此电脑>属性>高级系统设置>环境变量...)
  2. 在系统变量列表中找到Path变量>按编辑>放在第一个位置。这是必需的,因为 Java 安装程序添加了对安装的最新 Java 版本的引用。%JAVA_HOME%bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapathPATH在此输入图像描述
  3. 现在您可以使用命令在 Java 版本之间切换setx应在管理权限下运行):

    setx /m JAVA_HOME "c:\Program Files\Java\jdk-10.0.1\
    
    Run Code Online (Sandbox Code Playgroud)

    (注意:行尾没有双引号,不应该有,否则你会进入c:\Program Files\Java\jdk-10.0.1\"你的JAVA_HOME变量并破坏你的PATH变量)

使用系统变量(和管理权限)的解决方案更加健壮,因为它将所需的 Java 路径放在结果PATH变量的开头。