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

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

下载

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文件,直接打开安装就完事了。vim

java_home工具

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

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

加上-V参数,就能够列出全部的JDK安装路径:app

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,而后加入以下内容:code

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便可。it

相关文章
相关标签/搜索