Mac下多jvm优雅设置JAVA_HOME的方式

常规做法

设置JAVA_HOME最简单的方法在~/.bash_profile~/.zshrc中添加如下设置:

export JAVA_HOME="<JDK_HOME_DIR>"

然后使用source命令使其生效,其中<JDK_HOME_DIR>为JDK所在的主目录。

使用jenv

如果想要安装管理多个JDK,最方便的方式是使用jenv,使用起来非常简单方便,这里就不赘述了。

不过官方对于jenv的设置里面,不会自动设置JAVA_HOME,绝大多数情况下都没有问题,包括使用java -version命令也会得到正确的结果。但是昨天在Intellij IDEA中使用maven-release-plugin对一个项目执行mvn release:prepare命令进行发布的时候,总是出现一些莫名其妙的错误,而使用mvn release命令的时候是正常的。

后来通过分析 target/surefire-reports目录下的 Test-xxx.xml文件,发现其中的java.home竟然指向了系统下面最新版的JDK上面,而非我通过jenv设定的JDK版本。

/usr/libexec/java_home

MacOS下 /usr/libexec/java_home命令返回系统中最高版本的JDK,可以使用/usr/libexec/java_home -V (参数V大写) 命令返回系统中所有已经安装的JDK列表,如:

可以使用/usr/libexec/java_home -v <version> (参数v小写) 命令返回指定版本号的JDK所在目录,注意上面的版本号不一定完整,但一定确保唯一。比如上面图片中的例子,如果后面的versino是1.8的话会返回第一个,1.8.0的话就会返回第二个了。

最后,设置JAVA_HOME可以使用下面的方式了:

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0)

参考资料:
How to set or change the default Java (JDK) version on macOS?
java_home and JAVA_HOME on macOS

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注