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错误
Mac系统快速切换不同JDK相关推荐
- Mac电脑快速切换用户教程
你知道mac系统有多用户功能吗?如何在多个用户之间互相切换呢?macw小编为大家带来Mac电脑快速切换用户的办法,需要的朋友不要错过! 如何在菜单栏和控制中心启用快速用户切换 在macOS Big S ...
- Mac系统快速上手教学
注:适用于首次使用mac系统人群 一.触摸板常用操作 标题 二.常用快捷键 文件操作 全选: Command + A 复制: Command + C 粘贴: Command + V 回退: Comma ...
- Mac 系统快速迁移记录(M1 Max)
开箱大图(有图有真相) 系统迁移(大约4个小时,取决于传输数据大小) 定义: A=新Mac电脑 B=旧Mac电脑 迁移(https://support.apple.com/zh-cn/HT204350 ...
- Mac电脑快速切换输入法!自动切换输入法!
Mac电脑一般都会带有不同的输入法,而我们在不同的APP则可能需要不同的输入法来帮我们完成操作或者是工作.那么自动切换输入法就能来帮我们了. 自动切换输入法功能: 1.设置快捷键:自动输入法会有设置快 ...
- Mac 上快速切换同一程序的窗口
系统偏好设置->调度中心里可以看到这三组快捷键.
- IntelliJ IDEA for Mac的快速切换当前主题方案(Quick switch current scheme)
文章目录 一.配色方案 (Color Scheme) 二.代码样式方案(Code Style Scheme) 三.键映射表,即快捷键方案(Keymap) 四.视图模式/查看模式/显示模式(View M ...
- macbook配置java环境变量_Mac系统中如何配置JDK环境变量?Mac中JDK环境变量配置教程...
Mac系统中如何配置JDK环境变量?在使用mac系统的电脑时,如何进行设置JDK环境变量呢?接下来的文章中小编将会带来详细的介绍,希望对您有所帮助. Mac中JDK环境变量配置教程 1.访问Oracl ...
- VMware虚拟机Mac-OS-X系统如何切换中英文输入法
VMware虚拟机Mac系统如何切换中英文输入法? 被这个问题难住了吧?来54yongf.com就对了!笔者也是菜鸟,同级别的人交流,还是蛮有共同语言的!我是直接安装的OS X 10.10.系统中自带 ...
- Mac 系统如何在多个jdk版本之间切换
关注我 「Java之康庄大道」精彩文章第一时间推送给你 JDK更新的速度实在是太快了,我们一个项目还没完成,JDK已经更新好几代了,有时候我们既想要跟上JDK更新的步伐,又需要依赖以前的JDK版本,这 ...
最新文章
- css :hover
- LOST 迷失 Season 1
- Kinect2.0学习笔记
- redis linux 文件位置,Linux下Redis的安装和部署
- linux socket API / listen() 两个队列以及第 2 个参数的作用
- linux怎么改目录位置,Linux下更改MySQL数据目录位置具体操作方法
- DevOps使用到的工具・术语
- 玩转DataGridView之实现两个GRID间行的拖拽
- 计算机连接游戏手柄,无线游戏手柄怎么连接电脑 无线游戏手柄链接电脑方法...
- HP-Socket精简示例
- 测试经验总结分享(长期更新)
- CSMA/CA精辟总结
- mac环境下cocos2dx引擎3.x版本的创建工程步骤
- MOOS-ivp 实验四 MOOS编程入门(2)MOOS类讲解
- 互斥锁的应用与pthread_mutex_destory的出错
- MAC地址的介绍(单播、广播、组播、数据收发)
- 使用libcurl库把域名转化IP
- linux ftp 未找到命令,Linux不能使用FTP 命令 -bash: ftp: command not found
- android+sony+动态背景音乐,音乐流媒体时代,索尼ZX505给你不一样的感动
- DLT645通信规约DTU 智能远程抄表
热门文章
- dedecms教程:织梦未审核文档禁止动态浏览
- uniapp打包WGT背景图不显示问题
- objectDestructuringEmpty.js:2 Uncaught TypeError: Cannot destructure undefined
- PMI2012:如何打造百万年薪的项目经理--赵弘
- 美团外卖没有淡季,只因具备“铁三角结构优势”
- 605元买了Java教程自学半年后…… How2J怎么样?我的Java自学心得
- mysql权限系统的工作原理_Mysql权限系统工作原理_PHP教程
- which,that 引导定语从句不同
- Adobe Pro DC 2022 软件详细安装教程
- 昆山杜克大学IT/AV Analyst Entry-level面经