Mac 下如何方便地切换 JDK?


#1

最近从 JDK8 升级到 JDK 11,安装的时候直接安装就行了很方便,但是发现有的时候还需要切换回 JDK8,有什么好办法一键切换吗


#2

Mac 上的 JDK 包含了一个专用的工具可以用来做这个事情:

/usr/libexec/java_home

这个工具可以用来查询当前安装的 java 版本以及安装位置。比如我系统上安装的 JDK11,运行这个命令提示

/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home

如果你本地安装了多个版本,可以使用 -V 参数列出所有安装的 JDK

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    11, x86_64:	"Java SE 11"	/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
    1.8.0_144, x86_64:	"Java SE 8"	/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

那么重点来了,该怎么切换呢?可以通过这个工具,加上 -v 参数,来选择要使用的版本,可以把他们写在 bash profile 里面。比如,我在我的 .bash_profile 里面加上了下面几行:

alias j11="export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version"
alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version"

这样,我直接敲 j11j8 就能在两个 JDK 之间进行切换了。

注:以上适用于 Oracle JDK ,Open JDK 不确定有没有这个工具


#4

其实用jenv就挺方便的,另外可以用用zuul的jdk