Mac系统快速切换不同JDK

序言

JDK目前更新速度超级快,每年3月及9月都会发布一个版本,目前JDK19已经发布。如果想在一个环境体验不同JDK的功能差异,并且方便地切换,可以参考这篇文章

命令行切换

如果每次切换版本时,都手动修改环境变量(~/.bash_profile~/.zshrc),然后执行source命令让修改生效,还是比较麻烦的

可以考虑用alias命令,配置快捷方式。具体实现如下,在~/.bash_profile文件中增加如下配置

### JDK definition
JAVA_08=$(/usr/libexec/java_home -v 1.8)
JAVA_11=$(/usr/libexec/java_home -v 11)
JAVA_17=$(/usr/libexec/java_home -v 17)
JAVA_19=$(/usr/libexec/java_home -v 19)

### alias
alias java8='echo "export JAVA_HOME=$JAVA_08" >> ~/.bash_profile && source ~/.bash_profile && echo "switch to Java8"'
alias java11='echo "export JAVA_HOME=$JAVA_11" >> ~/.bash_profile && source ~/.bash_profile && echo "switch to Java11"'
alias java17='echo "export JAVA_HOME=$JAVA_17" >> ~/.bash_profile && source ~/.bash_profile && echo "switch to Java17"'
alias java19='echo "export JAVA_HOME=$JAVA_19" >> ~/.bash_profile && source ~/.bash_profile && echo "switch to Java19"'

配置完成后,执行source ~/.bash_profile

如果要切换到JDK17,直接在命令行中输入别名java17即可

  用alias可以查看当前已有的别名列表

上述配置文件中用到了/usr/libexec/java_home,在Mac OSX 10.5之后,在 /usr/libexec/ 路径下新增乐一个java_home文件,这是Mac系统用于管理JAVA_HOME的工具

目前切换JDK版本是全局生效的,打开新的Terminal也可以取到最新的JAVA_HOME,多切换了几次,发现~/.bash_profile文件末尾几行全是JAVA_HOME,最后一个生效,不影响功能。但还是优化一下吧,考虑用sed命令删除最后几行,再加入最新的值

优化后的配置如下

### JDK definition
JAVA_08=$(/usr/libexec/java_home -v 1.8)
JAVA_11=$(/usr/libexec/java_home -v 11)
JAVA_17=$(/usr/libexec/java_home -v 17)
JAVA_19=$(/usr/libexec/java_home -v 19)
THE_F=~/.bash_profile

### alias
alias java8='sed -i "" "/export JAVA_HOME=\//d" $THE_F && echo "export JAVA_HOME=$JAVA_08" >> $THE_F && source $THE_F && echo "switch to Java8"'
alias java11='sed -i "" "/export JAVA_HOME=\//d" $THE_F && echo "export JAVA_HOME=$JAVA_11" >> $THE_F && source $THE_F && echo "switch to Java11"'
alias java17='sed -i "" "/export JAVA_HOME=\//d" $THE_F && echo "export JAVA_HOME=$JAVA_17" >> $THE_F && source $THE_F && echo "switch to Java17"'
alias java19='sed -i "" "/export JAVA_HOME=\//d" $THE_F && echo "export JAVA_HOME=$JAVA_19" >> $THE_F && source $THE_F && echo "switch to Java19"'

再次切换几次后,发现一切正常,完美解决

参考文档

unalias命令详解

Mac sed命令invalid command code错误

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一束尘光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值