Mac系统快速切换不同JDK

news/2024/10/30 22:44:00/

序言

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


http://www.ppmy.cn/news/318166.html

相关文章

android双系统切换软件,双系统如何进行切换?

02双系统如何进行切换? ■双系统怎么切换使用? 台电X98 Air 3G(双系统版)在开机后进入选择系统界面,我们选择其中一个系统,点击确认,就能进入自己所需的系统。在选系统界面里,左上角有一个选项,这选项是用户根据自己爱好选择是否每次开机都要进入选系统界面。如果不勾上…

oppo android多大内存,OPPO R7 Plus的内存容量是多少?运存ram是多少?

OPPO R7 Plus的内存容量是多少 OPPO R7 Plus的内存容量是32GB。 根据提供的消息资料,就能了解到OPPO R7 Plus的内存容量是多少。配置方面,OPPO R7 Plus(移动版)搭载一颗MT6795 2.0GHz八核64位处理器,其基于Cortex-A57和 Cortex-A53架构&#…

r7c刷机android6.0,oppo R7c (电信4G)一键救砖教程,轻松刷回官方系统

oppo R7c (电信4G)手机变砖了怎么办?对于经常刷机的安卓玩家来说,碰到刷机失败导致oppo R7c (电信4G)手机无法启动甚至无法进入recovery都是在所难免的事,这个时候我们就需要用到奇兔线刷大师线刷救砖功能了,它能轻松实现oppo R7c (电信4G)一…

oppor7sm刷原生android,OPPO R7sm(全网通)一键救砖教程,轻松刷回官方系统

OPPO R7sm(全网通)手机变砖了怎么办?对于经常刷机的安卓玩家来说,碰到刷机失败导致OPPO R7sm(全网通)手机无法启动甚至无法进入recovery都是在所难免的事,这个时候我们就需要用到奇兔线刷大师线刷救砖功能了,它能轻松实现OPPO R7sm(全网通)一…

OPPO R7在哪里打开USB调试模式的详细流程

在我们使用PC连接安卓手机的时候,如果手机没有开启USB调试模式,PC则没办法成功检测到我们的手机,这时我们需要想办法将手机的USB调试模式打开,如下资料我们介绍OPPO R7如何开启USB调试模式的方法。 接着,在OPPO R7应用…

OPPO F7在哪里打开usb调试模式的简单经验

每次我们使用电脑链上安卓手机的时候,如果手机没有开启USB开发者调试模式,电脑则没能成功检测到我们的手机,此情况我们需要想方设法将手机的USB开发者调试模式开启,本文我们描述OPPO F7如何开启USB开发者调试模式的方法。 首先在O…

OPPO R7 获取Google Play权限

ROOT 电脑上安装“奇兔刷机”,USB连上手机后选择一键root即可root成功。 手机上安装谷歌框架 手机上安装联系人同步 手机上安装日历同步 手机上安装Google play Store.在手机上安装RE文件管理器 把data/app里的Google play Stor.APK(看图标&…