在 Windows 上的两个 java 版本之间切换

Posted

技术标签:

【中文标题】在 Windows 上的两个 java 版本之间切换【英文标题】:Switching between two java versions on Windows 【发布时间】:2016-01-17 17:10:42 【问题描述】:

目前我有一个 java 项目,我应该支持它的不同版本,它使用不同版本的 Java(和一些工具,如 Ant)。取决于问题单,我需要同时处理 java 版本(7 和 8)并且经常在它们之间切换。 有人可以建议更轻松地处理它的最佳方法吗?我正在使用 Windows 7,所以我编写了这样的 bat 文件进行切换(“switch_java.bat”):

@ECHO OFF
set changeToNewVersion=%1

IF "%changeToNewVersion%"=="true" (
    setx /M ANT_HOME "c:\Program Files\Ant\apache-ant-1.9.4"
    setx /M JAVA_HOME "c:\Program Files\Java\jdk1.8.0_51"
) ELSE IF "%changeToNewVersion%"=="false" (
    setx /M ANT_HOME "c:\Program Files\Ant\apache-ant-1.8.3"
    setx /M JAVA_HOME "c:\Program Files\Java\jdk1.7.0_79"
) ELSE (
    echo ERROR: Enter key!
)

但也许有更优化的解决方案?

【问题讨论】:

【参考方案1】:

IMO,这主要是基于意见的问题,但我认为您不会找到更好的解决方案,然后是批处理脚本来做到这一点。

在我看来,制作带参数的脚本可能不是很有用,因为它应该通过命令行或从另一个 bat 文件执行。

所以,你可以创建2个单独的bat文件,一个设置jdk 1.7,第二个设置jdk 1.8。或者您可以修改您的脚本,以确定当前版本并设置另一个。在这两种情况下,您都可以简单地调用执行一个 bat 文件,而无需提供任何额外的参数。

【讨论】:

感谢您的回复,我想,我会将脚本分成两部分,分别针对每个版本。但我正在寻找更多“标准”解决方案,如果存在的话.. 是的,我明白了,但据我所知,批处理脚本正是解决此问题的常用解决方案。但是看到任何其他可能的解决方案会很有趣【参考方案2】:

有一个适用于 windows 的 Github 工具。我自己使用它,它真的很好。 很少的选择,但你需要的一切。

您可以添加新的 JAVA 版本、更改当前终端的版本或全局更改它们。仅当您需要删除某个版本时,您才必须编辑配置

https://github.com/FelixSelter/JEnv-for-Windows

【讨论】:

【参考方案3】:

为了在一个环境中管理不同版本的 Java,我们可以使用jEnv tool。在安装并将其添加到 Path 环境变量之后,所有需要做的就是:

将您需要的所有 Java 版本添加到 jEnv 配置中,例如:

jenv add c:\Program Files\Java\jdk1.7.0_80

配置要使用的 JVM(全局、按目录或针对当前 shell 实例):

jenv global jdk1.7.0_80

【讨论】:

jEnv 看起来是一个很棒的工具,但它仅适用于基于 Unix 的操作系统。它是写在 shell 脚本上的,在 Windows 环境下不起作用。 Windows 的另一种解决方案可能是sdkmansdkman.io。虽然需要 Mingw 或者 W10 自带的嵌入式 Linux @Lu55,回答你可能已经晚了,但现在在 Windows 上,你可以将 jEnv 与 WSL 一起使用,或者只使用 Cygwin 将 bash 带入 Windows 环境。 刚刚在 WSL Ubuntu (ubuntu.com/wsl) 上安装了 jEnv。像魅力一样工作:D

以上是关于在 Windows 上的两个 java 版本之间切换的主要内容,如果未能解决你的问题,请参考以下文章

同一 Windows 服务主机上的两个 WCF 服务库之间的通信

Java 和 Python 之间的 Windows 上的 IPC 保护给当前用户

如何在 Mac OSX 上的 Java 版本之间切换? [复制]

Windows 7 上的 Java 7 64 位:如何切换 Java 版本

在Windows中安装和切换java 7和java 8

LeetCode--004--寻找两个有序数组的中位数(java)