[New]在 Mac OS 上管理多个 jdk 版本 [jdk1.6, jdk1.7, jdk1.8]

前言

系统版本MacOS10,系统安装的java jdk 是 jdk11,我要安装
jdk6
jdk7
jdk8

修改系统环境变量,以自如的切换多个版本的 jdk

vi ~/.bash_profile 并填写下文内容
source ~/.bash_profile // 刷新环境变量
java -version // 查看当前的 jdk 版本
# 设置自带的 jdk1.6
export JAVA_6_HOME=`/usr/libexec/java_home -v 1.6`
# 设置 jdk1.7
export JAVA_7_HOME=`/usr/libexec/java_home -v 1.7`
# 设置 jdk1.8
export JAVA_8_HOME=`/usr/libexec/java_home -v 1.8`

# 默认 jdk 使用1.6版本
export JAVA_HOME=$JAVA_6_HOME

# alias 命令动态切换 jdk 版本
alias jdk6="export JAVA_HOME=$JAVA_6_HOME"
alias jdk7="export JAVA_HOME=$JAVA_7_HOME"
alias jdk8="export JAVA_HOME=$JAVA_8_HOME"

每次使用 jdk6、jdk7、jdk8 命令切换 jdk 版本时,都可以输入 java -version 来查看是否已经成功。

原理

你安装 jdk 完成,进入 /Library/Java/JavaVirtualMachines 目录你会看到相应 jdk 文件夹的存在。当你安装了多版本 jdk 时,它们同时存在于这个目录下。

那么你使用的 java -version 做了什么?我们一步一步追踪

➜  ~ which java // 使用 `which java` 得到 `/usr/bin/java`
/usr/bin/java
➜  ~ ll /usr/bin/java // 使用 `ll /usr/bin/java` 得到 `.../Current/Commands/java`
lrwxr-xr-x  1 root  wheel    74B 10  9 17:53 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
➜  ~ cd /System/Library/Frameworks/JavaVM.framework/Versions
➜  Versions ls // 在这里,有苹果维护的多个 jdk 版本
1.4        1.5        1.6        A          CurrentJDK
1.4.2      1.5.0      1.6.0      Current
➜  Versions pwd
/System/Library/Frameworks/JavaVM.framework/Versions
➜  Versions ll
total 64
lrwxr-xr-x   1 root  wheel    10B 10  9 17:53 1.4 -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B 10  9 17:53 1.4.2 -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B 10  9 17:53 1.5 -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B 10  9 17:53 1.5.0 -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B 10  9 17:53 1.6 -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B 10  9 17:53 1.6.0 -> CurrentJDK
drwxr-xr-x  10 root  wheel   340B 10  9 17:53 A
lrwxr-xr-x   1 root  wheel     1B 10  9 17:53 Current -> A
lrwxr-xr-x   1 root  wheel    52B 10  9 17:53 CurrentJDK -> /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

可见苹果公司在开发 macOS 时已经内置了 jdk 版本管理的功能。它也提供了相应的 command line 工具。使用 /usr/libexec/java_home 即可直接查看当前的 $JAVA_HOME

➜  ~ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home
➜  ~ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
    1.8.0_102, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_102.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_102.jdk/Contents/Home
➜  ~ /usr/libexec/java_home -v 1.6
/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
➜  ~ /usr/libexec/java_home -v 1.7
/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
➜  ~ /usr/libexec/java_home -v 1.8
/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home

所以,我们在 .bash_profile 文件中加入 $JAVA_HOME 的动态设置,就可以自如的切换多个 jdk 版本了

参考

Mac上安装JDK7
在 Mac OS 上管理多个 jdk 版本

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值