常规做法
设置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