序言

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

Mac系统快速切换不同JDK相关推荐

  1. Mac电脑快速切换用户教程

    你知道mac系统有多用户功能吗?如何在多个用户之间互相切换呢?macw小编为大家带来Mac电脑快速切换用户的办法,需要的朋友不要错过! 如何在菜单栏和控制中心启用快速用户切换 在macOS Big S ...

  2. Mac系统快速上手教学

    注:适用于首次使用mac系统人群 一.触摸板常用操作 标题 二.常用快捷键 文件操作 全选: Command + A 复制: Command + C 粘贴: Command + V 回退: Comma ...

  3. Mac 系统快速迁移记录(M1 Max)

    开箱大图(有图有真相) 系统迁移(大约4个小时,取决于传输数据大小) 定义: A=新Mac电脑 B=旧Mac电脑 迁移(https://support.apple.com/zh-cn/HT204350 ...

  4. Mac电脑快速切换输入法!自动切换输入法!

    Mac电脑一般都会带有不同的输入法,而我们在不同的APP则可能需要不同的输入法来帮我们完成操作或者是工作.那么自动切换输入法就能来帮我们了. 自动切换输入法功能: 1.设置快捷键:自动输入法会有设置快 ...

  5. Mac 上快速切换同一程序的窗口

    系统偏好设置->调度中心里可以看到这三组快捷键.

  6. IntelliJ IDEA for Mac的快速切换当前主题方案(Quick switch current scheme)

    文章目录 一.配色方案 (Color Scheme) 二.代码样式方案(Code Style Scheme) 三.键映射表,即快捷键方案(Keymap) 四.视图模式/查看模式/显示模式(View M ...

  7. macbook配置java环境变量_Mac系统中如何配置JDK环境变量?Mac中JDK环境变量配置教程...

    Mac系统中如何配置JDK环境变量?在使用mac系统的电脑时,如何进行设置JDK环境变量呢?接下来的文章中小编将会带来详细的介绍,希望对您有所帮助. Mac中JDK环境变量配置教程 1.访问Oracl ...

  8. VMware虚拟机Mac-OS-X系统如何切换中英文输入法

    VMware虚拟机Mac系统如何切换中英文输入法? 被这个问题难住了吧?来54yongf.com就对了!笔者也是菜鸟,同级别的人交流,还是蛮有共同语言的!我是直接安装的OS X 10.10.系统中自带 ...

  9. Mac 系统如何在多个jdk版本之间切换

    关注我 「Java之康庄大道」精彩文章第一时间推送给你 JDK更新的速度实在是太快了,我们一个项目还没完成,JDK已经更新好几代了,有时候我们既想要跟上JDK更新的步伐,又需要依赖以前的JDK版本,这 ...

最新文章

  1. css :hover
  2. LOST 迷失 Season 1
  3. Kinect2.0学习笔记
  4. redis linux 文件位置,Linux下Redis的安装和部署
  5. linux socket API / listen() 两个队列以及第 2 个参数的作用
  6. linux怎么改目录位置,Linux下更改MySQL数据目录位置具体操作方法
  7. DevOps使用到的工具・术语
  8. 玩转DataGridView之实现两个GRID间行的拖拽
  9. 计算机连接游戏手柄,无线游戏手柄怎么连接电脑 无线游戏手柄链接电脑方法...
  10. HP-Socket精简示例
  11. 测试经验总结分享(长期更新)
  12. CSMA/CA精辟总结
  13. mac环境下cocos2dx引擎3.x版本的创建工程步骤
  14. MOOS-ivp 实验四 MOOS编程入门(2)MOOS类讲解
  15. 互斥锁的应用与pthread_mutex_destory的出错
  16. MAC地址的介绍(单播、广播、组播、数据收发)
  17. 使用libcurl库把域名转化IP
  18. linux ftp 未找到命令,Linux不能使用FTP 命令 -bash: ftp: command not found
  19. android+sony+动态背景音乐,音乐流媒体时代,索尼ZX505给你不一样的感动
  20. DLT645通信规约DTU 智能远程抄表

热门文章

  1. dedecms教程:织梦未审核文档禁止动态浏览
  2. uniapp打包WGT背景图不显示问题
  3. objectDestructuringEmpty.js:2 Uncaught TypeError: Cannot destructure undefined
  4. PMI2012:如何打造百万年薪的项目经理--赵弘
  5. 美团外卖没有淡季,只因具备“铁三角结构优势”
  6. 605元买了Java教程自学半年后…… How2J怎么样?我的Java自学心得
  7. mysql权限系统的工作原理_Mysql权限系统工作原理_PHP教程
  8. which,that 引导定语从句不同
  9. Adobe Pro DC 2022 软件详细安装教程
  10. 昆山杜克大学IT/AV Analyst Entry-level面经