IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> mac快速切换jdk版本终极方案(重启终端也生效) -> 正文阅读

[开发工具]mac快速切换jdk版本终极方案(重启终端也生效)

基于 zsh 终端,以 jdk8 和 jdk11 为例

一. 网上的解决方案

安装 jdk8 和 jdk11

这个就不再赘述了,百度即可

配置文件写入环境变量

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/bin

alias jdk8='export JAVA_HOME=$JAVA_8_HOME'
alias jdk11='export JAVA_HOME=$JAVA_11_HOME'
alias jdk17='export JAVA_HOME=$JAVA_17_HOME'

使用

在终端中输入 jdk8 即可切换为 8,输入 jdk11 即可切换为 11

二. 存在问题

只能在当前终端使用,重新打开终端后就会失效,因为每次重启终端后会自动执行 source ~/.zshrc,会把之前设置的覆盖掉

目前看来,要实现重启后也生效,只能在zshrc中写死JAVA_HOME

三. 完美优化

可以写个脚本自动修改zshrc文件的内容,这里使用的是python,需要安装python3

  1. python脚本如下

    '''
    Author: M?Haonan
    Date: 2022-01-07 17:27:53
    Description: 自动切换jdk版本,重启终端后也生效
    原理:通过修改zshrc文件的内容,修改`JAVA_HOME`
    '''
    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 = exportCommond
            rewrite = True
        # 删除java——home的导入
        if line.startswith("export PATH=$PATH:$JAVA_HOME/bin"):
            continue
        newLines.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))
    
  2. 修改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/mahaonan/script/jdkChange.py 1.8;export JAVA_HOME=$JAVA_8_HOME'
    alias jdk11='python3 /Users/mahaonan/script/jdkChange.py 11;export JAVA_HOME=$JAVA_11_HOME'
    alias jdk17='python3 /Users/mahaonan/script/jdkChange.py 17;export JAVA_HOME=$JAVA_17_HOME'
    

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

  3. 这样,在终端输入jdk8,jdk11,jdk17就可以进行全局和当前的jdk版本切换了

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-01-08 14:14:09  更:2022-01-08 14:16:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/25 9:20:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计