在macOS中安装并切换使用多个版本JDK

目前我工作中使用的JDK版本是JDK 8。今天打算好好研究一下JDK 6/7的方法区实现——永久代,与JDK 8的方法区实现——元空间的差别,所以就要在自用的MBP上面安装两个旧版本,并且保证它们可以共存,用完还可以随时切换。

下载

Oracle官网不提供适用于Mac的JDK 6,苹果官网有专用版本,传送门:https://support.apple.com/kb/DL1572?locale=zh_CN。
目前在官网下载JDK 8之前的版本都需要强制注册Oracle账号,比较繁琐。找到了一个Mac版JDK 7u80的百度云传送门:https://pan.baidu.com/s/1eSxoxxg。
下载下来的都是.dmg文件,直接打开安装就完事了。

java_home工具

macOS/OS X从很早之前就自带了检查JDK安装路径的工具,即/usr/libexec/java_home。如果直接执行,就返回当前的$JAVA_HOME设置:

lmagic@LM-MBP15-M15 ~ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home

加上-V参数,就可以列出所有的JDK安装路径:

lmagic@LM-MBP15-M15 ~ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
    1.8.0_181, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
    1.7.0_80, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
    1.6.0_65-b14-468, x86_64:   "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_65-b14-468, i386: "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home

加上-v参数并指定版本,就返回特定版本的JDK安装路径:

lmagic@LM-MBP15-M15 ~ /usr/libexec/java_home -v 1.6
/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

利用它就可以方便地在各个版本之间切换了。

修改环境变量

执行vim ~/.bash_profile,然后加入如下内容:

export JAVA_HOME_JDK6=`/usr/libexec/java_home -v 1.6`
export JAVA_HOME_JDK7=`/usr/libexec/java_home -v 1.7`
export JAVA_HOME_JDK8=`/usr/libexec/java_home -v 1.8`

export JAVA_HOME=$JAVA_HOME_JDK8

alias switch_jdk6="export JAVA_HOME=$JAVA_HOME_JDK6"
alias switch_jdk7="export JAVA_HOME=$JAVA_HOME_JDK7"
alias switch_jdk8="export JAVA_HOME=$JAVA_HOME_JDK8"

之后在命令行中执行switch_jdk6/7/8别名命令,就可以在JDK之间切换。如果是使用ZSH的话,就在.zshrc中加入上面的内容,或者直接写上source ~/.bash_profile即可。

你可能感兴趣的:(在macOS中安装并切换使用多个版本JDK)