在 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 的另一种解决方案可能是sdkman
sdkman.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 版本之间切换? [复制]