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错误

猜你喜欢

转载自blog.csdn.net/u013481793/article/details/127169360
今日推荐