当前位置: 首页 > news >正文

mac中有多个java版本涉及到brew安装中,怎么切换不同版本

在 macOS 上查看所有已安装的 Java 版本,可以用以下几种方法:

查看Java版本

方法一:使用系统命令查看所有 Java 版本路径

/usr/libexec/java_home -V

这个命令会列出系统中所有已安装的 Java 版本及其安装路径,例如:
Matching Java Virtual Machines (3):
17.0.6 (x86_64) "Oracle Corporation" - "Java SE 17.0.6" /Library/Java/JavaVirtualMachines/jdk-17.0.6.jdk/Contents/Home
11.0.19 (x86_64) "Oracle Corporation" - "Java SE 11.0.19" /Library/Java/JavaVirtualMachines/jdk-11.0.19.jdk/Contents/Home
1.8.0_361 (x86_64) "Oracle Corporation" - "Java SE 8u361" /Library/Java/JavaVirtualMachines/jdk1.8.0_361.jdk/Contents/Home

你看到的两个 Java 8 版本分别位于不同的位置,原因是它们来源和安装方式不同:
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
这是 macOS 系统中安装的 Java 插件路径,通常是 Oracle 官方安装的 Java 8 浏览器插件版本,主要用于支持浏览器中的 Java Applet(虽然现在大多数浏览器已经不支持 Java Applet 了)。这个版本一般是系统级别的插件,不建议用作开发环境的主要 JDK。
/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
这是标准的 Oracle JDK 8 安装路径,通常是你通过 Oracle 官网安装的完整 JDK,适合开发和运行 Java 应用。这个路径是 macOS 上常见的 JDK 安装目录。

总结:
第一个 Java 8 是浏览器插件版本,主要用于老旧浏览器的 Java 支持。
第二个 Java 8 是完整的 JDK,适合开发和运行 Java 程序。
如果你要切换 Java 版本,建议使用第二个路径的 JDK,或者你通过 Homebrew 安装的版本(如 OpenJDK 17、23 等)。

方法二:查看 /Library/Java/JavaVirtualMachines/ 目录

ls /Library/Java/JavaVirtualMachines/

这个目录通常存放通过官方安装包或 Homebrew 安装的 Java 版本,每个版本是一个 .jdk 文件夹。

环境切换与管理

方法一:使用 jenv 管理多个 Java 版本(推荐)

jenv 是一个专门用来管理多个 Java 版本的工具,使用方便。
安装 jenv

brew install jenv

添加 jenv 到 shell 配置文件(以 zsh 为例):

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc
source ~/.zshrc

添加已安装的 Java 版本到 jenv

jenv add /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home

路径根据你实际安装的版本调整。
查看已添加的版本:

jenv versions

设置全局 Java 版本:

jenv global 11.0

设置当前目录(项目)使用的 Java 版本:

jenv local 8.0

验证当前 Java 版本:

java -version

备注:切换之后要重新打开shell

方法二:手动切换 JAVA_HOME

你也可以手动设置环境变量 JAVA_HOME 来切换版本:
查看已安装的 Java 版本路径:
/usr/libexec/java_home -V

设置 JAVA_HOME,例如切换到 Java 11:

export JAVA_HOME=$(/usr/libexec/java_home -v 11)
export PATH=$JAVA_HOME/bin:$PATH

你可以把这段命令写入 ~/.zshrc~/.bash_profile,方便切换。

http://www.lryc.cn/news/582137.html

相关文章:

  • Playwright vs TestCafe 对象注入机制详解对比
  • Redis Tag 字段详解与最佳实践
  • 可扩展 Redis 查询引擎的最佳实践
  • 人工智能-基础篇-22-什么是智能体Agent?(具备主动执行和调优的人工智能产物)
  • DejaOS常见问题
  • (4)ROS2:moveit2的几个坑
  • 多通道采发仪VS系列 智能监测终端 工业级采发仪精准守护隧道边坡、水利大坝
  • 【Echarts】“折线+柱状”实现双图表-家庭用电量可视化【文章附完整代码】
  • 【SigNoz部署安装】Ubuntu环境部署SigNoz:Docker容器化监控的全流程指南
  • 御控网关如何实现MQTT、MODBUS、OPCUA、SQL、HTTP之间协议转换
  • HTTP 重定向
  • Camera相机人脸识别系列专题分析之十六:人脸特征检测FFD算法之libcvface_api.so数据结构详细注释解析
  • C++ -- string类的模拟实现
  • Day07- 管理并发和并行挑战:竞争条件和死锁
  • 【AI大模型入门指南】机器学习入门详解
  • 烟雾,火焰探测器
  • Linux操作系统:软硬链接与动静态库
  • ClickHouse介绍与应用
  • 迁移GitLab,在新Linux中用Docker重新部署GitLab备份还原
  • C#中的BindingList有什么作用?
  • 【机器学习深度学习】多分类评估策略:混淆矩阵计算场景模拟示例
  • 亚马逊运营进阶指南:如何用AI工具赋能广告运营
  • 诊断工程师进阶篇 --- 车载诊断怎么与时俱进?
  • English Practice - Day 2
  • vite打包的简单配置
  • react状态管理库 - zustand
  • 风电自动化发电中的通信桥梁:CAN主站转MODBUS TCP网关解析
  • 【MyBatis】MyBatis与Spring和Spring Boot整合原理
  • 5种方法将联系人从iPhone转移到OnePlus
  • C++--map和set的使用