MacOS如何安装配置多个JDK并切换使用详解

 更新时间:2025年02月24日 08:35:44   作者:程序员哈欠  
这篇文章主要介绍了如何在MacOS上安装和配置多个JDK版本,通过配置环境变量来实现,文中通过代码介绍的非常详细,需要的朋友可以参考下

由于JDK版本极快的更新速度,因此常常会出现不同项目需要的JDK不同情况,所以需要明白如何在操作系统安装配置多个JDK,本篇博客以MacOS举例。

提示:如果是M系列芯片,推荐下载arm版本

概述

安装配置多个JDK一共三步:

实现多个JDK的关键是如何配置环境变量,是本文的重点,因此第一二步略过

配置环境变量

JDK下载与安装的区别

下载 JDK:

  • 过程: 这涉及从 Oracle 官方网站、OpenJDK 社区,或者其他提供商下载 JDK 的二进制分发包。这通常是一个 .dmg (Disk Image)、.tar.gz、或者像 .pkg 这样的安装包。
  • 本质: 下载只是将安装文件从网络传输到你的本地计算机,这一步只是在你的硬盘上存储了安装文件,并未进行任何系统级的修改。

安装 JDK:

  • 过程: 这一步包括运行实际下载的安装程序或按照下载 README 的指示进行解压和配置。安装过程通常会复制 JDK 文件到系统的特定目录(例如 /Library/Java/JavaVirtualMachines),以及更新相关的系统环境配置。
  • 本质: 安装步骤会把 JDK 添加到计算机的路径中,使其成为全局可用。它通常会在系统中注册这个 JDK,使得 Java 命令(例如 javajavac)可以在终端中全局访问。

简而言之:下载只是压缩包,安装包括解压与配置

了解配置项

先给大家看看配置项

#JAVA
JAVA_HOME_17=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
JAVA_HOME_8=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home

export JAVA_HOME=$JAVA_HOME_8

PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

export PATH
export CLASSPATH

用编程的思维大致理解要做的事

  • 定义变量
  • 操作变量
  • return变量

JAVA_HOME_17 and JAVA_HOME_8

这些行分别定义了两个环境变量 JAVA_HOME_17 和 JAVA_HOME_8,用于存储 Java 17 和 Java 8 安装的路径。

  • JAVA_HOME_17 设置为 Java 17 的路径:/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
  • JAVA_HOME_8 设置为 Java 8 的路径:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home

export JAVA_HOME=$JAVA_HOME_8

这行命令将 JAVA_HOME 环境变量设置为 JAVA_HOME_8 的值,指定将使用 Java 8 作为默认的 Java 环境。这里是切换JDK的重点

  • export 命令用于将环境变量暴露给终端中运行的所有子进程,确保在终端中运行的 Java 程序使用这个 JDK。

PATH=$JAVA_HOME/bin:$PATH

这行代码重新设置了 PATH 环境变量的值。让我们逐个部分地解释:

  • PATH=

    • PATH 是一个环境变量,存储了一系列目录的路径,系统会依次在这些目录中查找可执行文件。当你在终端中输入一个命令时,shell 根据这些路径来寻找并执行对应的程序。
    • = 用于给变量赋值。在这行代码中,我们更新了 PATH 变量的值。
  • $JAVA_HOME/bin

    • $JAVA_HOME 是一个变量,存储了当前 Java 安装目录的路径。在这段代码中,它被设置为 JAVA_HOME_8,指向 Java 8 的安装路径。
    • /bin 是一个相对路径,表示我们要访问 JAVA_HOME 目录下的 bin 子目录,该目录包含了所有与 Java 相关的可执行文件,例如 java 和 javac
    • 当 JAVA_HOME 被正确设置时,$JAVA_HOME/bin 的实际值可能为 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/bin
  • :$PATH

    • : 是路径分隔符。在 UNIX 和类 UNIX 系统中,环境变量 PATH 中的各个路径是用冒号分隔的。
    • $PATH 表示当前 PATH 变量的值。
    • :$PATH 表示我们要把当前的 PATH 内容追加到新的 PATH 变量值之后。

总结一下,这行代码的作用是:

  • 将 Java 安装目录下的 bin 文件夹添加到 PATH 的开头。这样能确保运行 javajavac 等命令时,优先使用当前配置的 JDK。
  • 保留先前的 PATH 内容,确保系统的其他命令仍然可以被正常调用。

CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

CLASSPATH 用于定义 Java 在运行时和编译时搜索类文件的路径。

  • tools.jar 和 dt.jar 是 JDK 中的库,tools.jar 包含用于编译和运行 Java 应用程序的工具,而 dt.jar 通常和图形界面构建有关。

export PATH 和 export CLASSPATH

  • 类似于 export JAVA_HOME, 这些 export 命令将已设置的 PATH 和 CLASSPATH 环境变量对终端中运行的所有子进程可用。
  • 确保命令行程序和 Java 程序可以使用这些变量中配置的路径和库。

编写配置项

1.在终端中,打开.zshrc文件

open .zshrc

2.将刚才的配置项粘贴到文件中

3.在终端中,使.zshrc文件生效

source ~/.zshrc

切换JDK

在终端中,查看一下我们的JDK版本

java -version

1.在终端中,打开.zshrc文件

open .zshrc

2.修改JAVA_HOME的值

export JAVA_HOME=$JAVA_HOME_17

3.在终端中,使.zshrc文件生效

source ~/.zshrc

再查看一次,发现已经切换成功了

总结 

到此这篇关于MacOS如何安装配置多个JDK并切换使用的文章就介绍到这了,更多相关MacOS安装配置多个JDK切换使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot中JetCache的使用方法小结

    springboot中JetCache的使用方法小结

    本文主要介绍了springboot中JetCache的使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-10-10
  • Mybatis批量更新三种方式的实现

    Mybatis批量更新三种方式的实现

    这篇文章主要介绍了Mybatis批量更新三种方式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • Java 使用Socket正确读取数据姿势

    Java 使用Socket正确读取数据姿势

    这篇文章主要介绍了Java 使用Socket正确读取数据姿势,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • SpringCloud服务接口调用OpenFeign及使用详解

    SpringCloud服务接口调用OpenFeign及使用详解

    这篇文章主要介绍了SpringCloud服务接口调用——OpenFeign,在学习Ribbon时,服务间调用使用的是RestTemplate+Ribbon实现,而Feign在此基础上继续进行了封装,使服务间调用变得更加方便,需要的朋友可以参考下
    2023-04-04
  • java Clone接口和深拷贝详解

    java Clone接口和深拷贝详解

    今天小编就为大家分享一篇关于Java Clonable接口和深拷贝详解上的深入了解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2021-08-08
  • SpringBoot如何正确配置并运行Kafka

    SpringBoot如何正确配置并运行Kafka

    这篇文章主要介绍了SpringBoot如何正确配置并运行Kafka问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • java题解LeetCode20.有效的括号

    java题解LeetCode20.有效的括号

    这篇文章主要为大家介绍了java题解LeetCode20.有效的括号示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 如何在32位Windows系统下安装Java

    如何在32位Windows系统下安装Java

    这篇文章主要介绍了如何在32位Windows系统下安装Java,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • Spring Boot将@RestController误用于视图跳转问题解决

    Spring Boot将@RestController误用于视图跳转问题解决

    这篇文章主要为大家介绍了Spring Boot将@RestController误用于视图跳转问题解决方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 解读JDK1.8 默认使用什么垃圾收集器

    解读JDK1.8 默认使用什么垃圾收集器

    这篇文章主要介绍了解读JDK1.8 默认使用什么垃圾收集器,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05

最新评论