【MAC环境】安装多个 JDK

在 macOS 上安装和管理多个 JDK 并实现自由切换,可以通过以下步骤实现:

1. 安装多个 JDK

你可以通过以下方式安装多个 JDK 版本:

  • 官方网站下载 :从 Oracle 官网AdoptOpenJDK 下载不同版本的 JDK 安装包(.dmg),依次安装

  • 使用 Homebrew :通过 brew 命令安装不同版本

    bash 复制代码
    # 搜索可用的 JDK 版本
    brew search openjdk
    
    # 安装特定版本,例如 openjdk@11 和 openjdk@17
    brew install openjdk@11
    brew install openjdk@17

安装完成后,JDK 通常会被安装在以下路径:

  • 官方安装:/Library/Java/JavaVirtualMachines/
  • Homebrew 安装:/usr/local/Cellar/openjdk@版本号/

2. 配置 JDK 切换

推荐使用 jenv 工具来管理多个 JDK 版本,步骤如下:

安装 jenv
bash 复制代码
# 使用 Homebrew 安装 jenv
brew install jenv

# 配置环境变量(根据你的 shell 选择相应配置)
# 对于 bash
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile

# 对于 zsh(macOS 默认 shell)
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc

# 重新加载配置
source ~/.zshrc  # 或 source ~/.bash_profile
添加已安装的 JDK 到 jenv
bash 复制代码
# 查看已安装的 JDK 路径
ls /Library/Java/JavaVirtualMachines/

# 将 JDK 添加到 jenv(替换为实际的版本路径)
jenv add /Library/Java/JavaVirtualMachines/jdk-11.0.15.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk-17.0.3.jdk/Contents/Home

# 查看已添加的 JDK 版本
jenv versions
切换 JDK 版本
bash 复制代码
# 设置全局默认版本
jenv global 11.0.15

# 设置当前终端会话的版本
jenv shell 17.0.3

# 设置当前目录及其子目录的版本(会创建 .java-version 文件)
jenv local 11.0.15
验证当前 JDK 版本
bash 复制代码
java -version
javac -version

3. 手动切换方法(不使用工具)

如果不想使用 jenv,也可以手动配置环境变量:

bash 复制代码
# 在 .zshrc 或 .bash_profile 中添加
JAVA_HOME_8=/Library/Java/JavaVirtualMachines/jdk1.8.0_361.jdk/Contents/Home
JAVA_HOME_17=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

JRE_HOME=$JAVA_HOME/jre
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export JAVA_HOME=$JAVA_HOME_17
export JRE_HOME
export PATH
export CLASSPATH

alias jdk8="export JAVA_HOME=$JAVA_HOME_8"
alias jdk17="export JAVA_HOME=$JAVA_HOME_17"

# 重新加载配置
source ~/.zshrc  # 或 source ~/.bash_profile

配置完成后,只需在终端输入 jdk8jdk11 等别名即可切换 JDK 版本。

相关推荐
Knight_AL21 小时前
如何解决 Jacob 与 Tomcat 类加载问题:深入分析 Tomcat 类加载机制与 JVM 双亲委派机制
java·jvm·tomcat
枫叶丹421 小时前
【Qt开发】多元素类控件(二)-> QTableWidget
开发语言·qt
bin915321 小时前
当AI开始‘映射‘用户数据:初级Python开发者的创意‘高阶函数‘如何避免被‘化简‘?—— 老码农的函数式幽默
开发语言·人工智能·python·工具·ai工具
哲学七21 小时前
Springboot3.5.x版本引入javaCv相关库版本问题以及精简引入包
java·ffmpeg
Aqua Cheng.21 小时前
代码随想录第七天|哈希表part02--454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
java·数据结构·算法·散列表
Nebula_g21 小时前
Java哈希表入门详解(Hash)
java·开发语言·学习·算法·哈希算法·初学者
努力努力再努力wz21 小时前
【C++进阶系列】:万字详解unordered_set和unordered_map,带你手搓一个哈希表!(附模拟实现unordered_set和unordered_map的源码)
java·linux·开发语言·数据结构·数据库·c++·散列表
励志不掉头发的内向程序员21 小时前
【STL库】哈希表的原理 | 哈希表模拟实现
开发语言·c++·学习·散列表
万粉变现经纪人1 天前
如何解决 pip install -r requirements.txt 私有仓库认证失败 401 Unauthorized 问题
开发语言·python·scrapy·flask·beautifulsoup·pandas·pip