当前位置: 首页 > 知识库问答 >
问题:

在Windows中的不同JDK版本之间切换

盛柏
2023-03-14

我正在做一些项目,其中一些使用不同的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

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

我找到的第二个解决方案是这个网站的一个应用程序。而且也不管用。与第一个解决方案中的效果相同。

有什么想法吗?因为改变JAVA_HOME和PAHT:赢得暂停-

共有3个答案

李兴庆
2023-03-14
setx /m JAVA_HOME "c:\Program Files\Java\jdk-10.0.1\

(注意:行尾没有双引号,也不应该有双引号,否则您会在< code>JAVA_HOME变量中得到< code > c:\ Program Files \ Java \ JDK-10 . 0 . 1 \ " ,这会破坏< code>PATH变量)

具有系统变量(和管理权限)的解决方案更加健壮,因为它将所需的Java路径放在生成的path变量的开头。

南门承教
2023-03-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

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

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

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,并将此文件位置添加到机器的路径环境变量中。所以现在SJV将充当“切换Java版本”的命令。

现在打开新的动力外壳窗口,只需键入SJV 11,它将切换到Java 11。键入 SJV 8SJV 它将切换到 Java 8。

我希望这能帮助那些想经常改变它的人。

葛景龙
2023-03-14

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

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

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

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

如果只将 %JAVA_HOME% 放入该变量一次,而不是完整的 JDK 路径,则可以避免操作 PATH 变量。如果更改JAVA_HOMEPATH 也将更新。

除了繁琐的Windows环境变量设置之外,还有一些环境变量编辑器。请参阅“在Windows 7中是否有方便的方法编辑PATH?”超级用户。

 类似资料:
  • 我偶然发现了这种并发症,花了4个多小时调试和谷歌搜索,但无济于事... 基本上我这里有1个JFrame,2个JPanel。我将JFrame设置为JPanel的第1个内容窗格,当我运行应用程序时,JFrame将显示,其中包含JPanel。 现在这个JPanel里面有1个JButton,当我点击它时,我希望它切换到另一个JPanel。正如您从代码中看到的,当我单击JButton(AddProduct)

  • 我尝试了几种方法将mac上的JDK版本从13.0.2切换到14.0.1,但都失败了。首先我打了 导出java_home=$(/usr/libexec/java_home-v 14.0.1) 在bash文件中,并在一个新的终端中键入 java版本 当我键入时编辑 它返回哪个java:

  • 我是android开发的新手,请多多包涵。我有三个片段-Frag1、Frag2和frag3。Frag1是一种ListView,有一个项目列表,该列表是在应用程序启动时创建的。Frag2和Frag3基本上对应于视频视图,它将用于从不同的播放器播放不同的视频。其中一个将播放内容视频,另一个将播放广告视频。 当我点击Frag1中的一个特定项时,我希望同时创建Frag2和frag3。我想有两个片段,因为我

  • 所以,我正在使用flutter版本2.2.3,现在无法升级。但是,我的另一个项目需要更高的SDK。我知道,有FVM。但我发现了一个问题:如何在同一设备上为不同的项目使用两个版本的flutter?并引用文章:https://dartcode.org/docs/quickly-switching-between-sdk-versions/ 有什么建议吗?

  • 问题内容: 我从UDP套接字获取了一个字节片(),并希望将其视为整数片(),而无需更改基础数组,反之亦然。在C(++)中,我只是在指针类型之间进行转换;我将如何在Go中执行此操作? 问题答案: 正如其他人所说,在Go中强制转换指针被认为是错误的形式。这是正确的Go方式示例以及与C数组转换等效的示例。 警告:所有代码未经测试。 在此示例中,我们使用包将每组4个字节转换为。这样更好,因为我们指定了字节

  • 最近,我在我的windows 10笔记本电脑上安装了Cassandra。在Cassandra规范中,他们提到该版本仅适用于Java 8和Python 2版本。但在我的笔记本电脑上,我已经有了java 16和python 3版本。在系统变量中完成Cassandra下载后,变量名“Java Home”变量值C:\Program Files\Java\jdk-16.0.2被替换为C:\Program F