关注我 「Java之康庄大道」精彩文章第一时间推送给你

JDK更新的速度实在是太快了,我们一个项目还没完成,JDK已经更新好几代了,有时候我们既想要跟上JDK更新的步伐,又需要依赖以前的JDK版本,这个时候就需要在电脑上安装多个版本的JDK了,这篇文章就讲一下,如何在MAC系统中安装多个jdk并随时切换。

1.在 zshrc 中设置环境变量

# 进入zshrc文件
vim ~/.zshrc# 修改文件在里面添加如下
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_17_HOME=$(/usr/libexec/java_home -v17)
export PATH=$PATH:$JAVA_HOME/binalias jdk8='export JAVA_HOME=$JAVA_8_HOME'
alias jdk11='export JAVA_HOME=$JAVA_11_HOME'
alias jdk17='export JAVA_HOME=$JAVA_17_HOME'

然后就可以在terminal中用jdk8切换到1.8版本,用jdk11切换到11版本,用jdk17切换到17版本了,但是这个方法存在一个问题,就是每次重启终端之前设置的版本就会失效,只能在当前终端使用,因为每次重启终端后会自动执行 source ~/.zshrc,会把之前设置的覆盖掉。

2.使用 python 脚本自动修改

需要电脑安装 python3,脚本jdkChange.py如下:

import sys,os
home_path = os.environ['HOME']
ZSH_CONFIG_FILE = home_path + '/.zshrc'content = ''
with open(ZSH_CONFIG_FILE, "r") as f:content = f.read()
if len(sys.argv) == 1:exit("请传入jdk版本,例如1.8,11,17")jdk = sys.argv[1]
jdk_home = '$(/usr/libexec/java_home -v' + jdk + ')'
exportCommond = "export JAVA_HOME=" + jdk_home;
lines = content.split("\n")
newLines = []
rewrite = False
for line in lines:if line.startswith("export JAVA_HOME"):line = exportCommondrewrite = True# 删除java——home的导入if line.startswith("export PATH=$PATH:$JAVA_HOME/bin"):continuenewLines.append(line)
if not rewrite:newLines.append(exportCommond)
# 在文件末尾导入PATH
newLines.append("export PATH=$PATH:$JAVA_HOME/bin")
with open(ZSH_CONFIG_FILE, "w") as f:f.write('\n'.join(newLines))

接下来需要修改zshrc文件如下:

export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_17_HOME=$(/usr/libexec/java_home -v17)alias jdk8='python3 /Users/yunqing/Documents/software/jdkChange.py 1.8;export JAVA_HOME=$JAVA_8_HOME'
alias jdk11='python3 /Users/yunqing/Documents/software/jdkChange.py 11;export JAVA_HOME=$JAVA_11_HOME'
alias jdk17='python3 /Users/yunqing/Documents/software/jdkChange.py 17;export JAVA_HOME=$JAVA_17_HOME'

其中前面的python3命令是为了全局的环境变量,即终端重启后可以生效,后面的export JAVA_HOME是为了当前终端可以生效.

经过如上配置,就可以实现自由切换 JDK 版本了。

Mac 系统如何在多个jdk版本之间切换相关推荐

  1. mac 卸载php版本,mac 系统下删除旧的php版本安装最新的php版本及Xdebug

    这篇文章介绍的内容是关于mac 系统下删除旧的php版本安装最新的php版本及Xdebug,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 我的2015版的macpro 系统下默认安装了 ...

  2. java1.8是jav多少_win10 64位系统中安装多个jdk版本(通过修改JAVA_HOME对应的%JAV

    win10 64位系统中安装多个jdk版本(通过修改JAVA_HOME对应的%JAV win10 64位系统中安装多个jdk版本(通过修改JAVA_HOME对应的%JAVA_HOME?% 来超简单修改 ...

  3. Mac电脑jdk的安装和jdk版本的切换

    jdk版本的切换: 在mac切换jdk是一件非常容易的事情. 1,查看自己mac中的jdk版本,java -version是查看自己电脑当前正在使用的jdk版本,输入 /us r/libexec/ja ...

  4. java切换jdk版本_切换JDK版本quick

    最近遇到一个小问题,同时做两个项目,jdk版本一个是5,一个是6,我也去网上找了找方法,但是感觉不是特别好用,最后自己通过一些环境变量设置的技巧和一些批处理命令来使得这件事情只需要双击,输入一个数字回 ...

  5. TLS协议与JDK版本之间微妙的关系

    TLS协议与JDK版本之间微妙的关系 首先想知道TLS协议与JDK版本之间微妙的关系,就必须知道什么是TLS协议? 维基百科是这样说的: 传输层安全性协定(英语:Transport Layer Sec ...

  6. windows下JDK版本之间的切换

    安装JDK的时候个人比较推荐使用压缩包的方式安装. 如果你的电脑存在多个JDK版本的时候,如果使用的是压缩包解压的方式安装的话,你可能仅仅需要更改一下JAVA_HOME环境变量 你敲java -ver ...

  7. 安装多个jdk版本并切换

    官网下载:Java Downloads | Oracle 我们在学习的过程中 经常用到不同的jdk版本  那么如何在一台电脑上同时安装2个jdk版本 并进行切换呢? 我这里面以jdk1.8 和jdk1 ...

  8. 〖Linux〗多个JDK版本之间快速切换

    由于工作的需要,经常要切换JDK版本比如我HOME目录下有三个JDK版本: ~/apt/jdk1.6.0_34 # JDK6 ~/apt/jdk1.7.0_67 # JDK7 ~/apt/jdk1.8 ...

  9. Windows下多个JDK版本的切换方法

    问题 因我之前在window中无法命令行输入,后来发现是电脑中存在多个JDK,导致设置混乱. 于是,我继续深入研究了当电脑存在多个JDK的情况下,如何设置想要的JDK版本. 步骤 1.更改环境变量 进 ...

最新文章

  1. 简单聊下中台概念与发展
  2. C++_typedef名字
  3. 如何在Swift 3中创建调度队列
  4. 计算机转集成光学,集成光学
  5. 突然感到很无聊当没有看书时
  6. Rabbitmq消息发送事务与确认机制
  7. 【转载】SSD 下的 MySQL IO 优化
  8. Android抽屉(SlidingDrawer --类似android通知栏下拉效果)
  9. lintcode:递归打印数字
  10. nfs搭建和可能的问题
  11. php返回代码翻译,php 在线翻译函数代码
  12. 看英文PDF利器 智器+ColorDict 辞典
  13. 气象数据 常用下载网站
  14. 【vue/iview】将所选择的文本插入文本框的光标处
  15. 学在信息——初窥门径
  16. 三、python数据序列1-列表
  17. Nginx 配置问题 server directive is not allowed here in /etc/nginx/nginx.conf:69
  18. MATLAB基于Randon变换的图像倾斜校正算法及实现
  19. 东南亚跨境电商如何做测评自养号
  20. 将word试卷匹配转换为结构化表格

热门文章

  1. 0422数学口袋精灵bug发现
  2. ChatGPT正式开放API,企微接入平台上线
  3. 多线程面试题Top50
  4. ruoyi后台管理系统分析(六)----system包
  5. openGauss社区十一月运作报告
  6. mysql五日均线_五日均线和日均线它们有什么作用吗?
  7. Redis分布式锁----悲观锁实现,以秒杀系统为例
  8. 金融 数据库 mysql_华为云MySQL金融版正式商用,高可靠的金融级数据库来了
  9. 高通平台获取和修改GPIO状态
  10. Excel聚类分析-人口统计模式下的分群算法