网站首页 > 技术文章 正文
大家在日常项目开发过程中,由于公司多个Java项目使用的JDK版本不一致或其他原因,经常需要切换使用不同的JDK版本;在Windows或Linux上,常用的方法可能是通过环境变量来控制,但是在Mac平台上,我尝试了采用同样环境变量控制的方法结果存在各种各样的问题。
通过查询发现Mac上有一个Java版本管理软件:jenv。本文就介绍一下如何通过jenv来管理Mac上的多个JDK版本并在不同的项目上使用不同的JDK。
1.Mac安装多版本OpenJDK
首先我们在Mac上安装多个不同版本的OpenJDK。
1.1卸载旧版本JDK(可省略)
打开Mac终端,输入java -version命令检查是否有jdk存在,如果有且不是OpenJDK,就把他们卸载,否则可跳过此步骤:
1)在终端删除相关目录
sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -fr /Library/PreferencesPanes/JavaControlPanel.prefpane
2)在终端查看当前Java版本
ls /Library/Java/JavaVirtualMachines/
如果存在结果,输出如下:
jdk-8.3.1.jdk
3)在终端删除该查询结果
sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk
1.2安装OpenJDK
1)输入以下命令更新源
brew tap AdoptOpenJDK/openjdk
2)输入以下命令搜索需要的OpenJDK版本
brew search /adoptopenjdk/
输出如下:
$ brew search /adoptopenjdk/
==> Casks
adoptopenjdk-jre adoptopenjdk12-openj9-jre-large adoptopenjdk15-openj9
adoptopenjdk-openj9 adoptopenjdk12-openj9-large adoptopenjdk15-openj9-jre
adoptopenjdk-openj9-jre adoptopenjdk13 adoptopenjdk15-openj9-jre-large
adoptopenjdk-openj9-jre-large adoptopenjdk13-jre adoptopenjdk15-openj9-large
adoptopenjdk-openj9-large adoptopenjdk13-openj9 adoptopenjdk16
adoptopenjdk10 adoptopenjdk13-openj9-jre adoptopenjdk16-jre
adoptopenjdk11 ? adoptopenjdk13-openj9-jre-large adoptopenjdk16-openj9
adoptopenjdk11-jre adoptopenjdk13-openj9-large adoptopenjdk16-openj9-jre
adoptopenjdk11-openj9 adoptopenjdk14 adoptopenjdk8 ?
adoptopenjdk11-openj9-jre adoptopenjdk14-jre adoptopenjdk8-jre
adoptopenjdk11-openj9-jre-large adoptopenjdk14-openj9 adoptopenjdk8-openj9
adoptopenjdk11-openj9-large adoptopenjdk14-openj9-jre adoptopenjdk8-openj9-jre
adoptopenjdk12 adoptopenjdk14-openj9-jre-large adoptopenjdk8-openj9-jre-large
adoptopenjdk12-jre adoptopenjdk14-openj9-large adoptopenjdk8-openj9-large
adoptopenjdk12-openj9 adoptopenjdk15 adoptopenjdk9
adoptopenjdk12-openj9-jre adoptopenjdk15-jre homebrew/cask/adoptopenjdk
3)分别执行如下命令安装OpenJDK8和OpenJDK11
brew install --cask adoptopenjdk8
brew install --cask adoptopenjdk11
2.配置jenv版本管理工具
2.1安装jenv
在终端执行如下命令安装jenv
brew install jenv
安装成功后,执行如下命令检测环境
jenv doctor
将jenv配置到环境变量中
echo eval "$(jenv init -)" >> /Users/user_name/.zshrc
2.2配置多JDK环境
1)将OpenJDK8加入到管理环境
jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
2)将OpenJDK11加入到管理环境
sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk
jenv add /Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home<br>jenv versions
3)配置全局JDK
jenv global openjdk64-1.8.0.292 #该版本在执行完jenv docktor后显示
java -version
4)配置项目单独使用的JDK
cd JavaProject
jenv local openjdk64-11.0.11 #该版本在执行完jenv docktor后显示
java -version
猜你喜欢
- 2024-10-01 Windows 系统下安装Java 22(统信系统下安装windows)
- 2024-10-01 Charles for Mac(HTTP协议抓包工具)v4.6.2b4注册激活版
- 2024-10-01 Mac安装Navicat(Mac安装anaconda)
- 2024-10-01 Mac中如何快速安装Jenkins(mac 安装jenkins)
- 2024-10-01 MacBook Java开发环境搭建记录(macbookair java开发)
- 2024-10-01 Mac 安装JDK 8、JDK 11、JDK 17 等多版本并存
- 2024-10-01 Mac Arm64 版本 java 11 SDK 提升SpringBoot 项目编译速度10秒 以上
- 2024-10-01 Mac通过Homebrew安装Python3(如何在mac上安装python 3.7版本)
- 2024-10-01 Mac安装多个版本JDK并实现灵活切换
- 2024-10-01 MacOS 系统中如何安装多个版本JDK并进行自由切换
- 1517℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 594℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 521℃MySQL service启动脚本浅析(r12笔记第59天)
- 489℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 489℃启用MySQL查询缓存(mysql8.0查询缓存)
- 477℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 456℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 454℃MySQL server PID file could not be found!失败
- 最近发表
-
- PS所有滤镜的说明(六)(ps滤镜详解)
- 5款小白也能用的在线图片编辑器!电商效率飙升就靠它!
- Java变量(java变量有什么作用)
- Java面试常见问题:Java注解(java中的面试题)
- Java编程入门第一课:HelloWorld(java编程从入门到实践)
- Java基础教程:Java继承概述(java里继承的概述)
- java基础之——访问修饰符(private/default/protected/public)
- 如何规划一个合理的JAVA项目工程结构
- 将机器指令翻译成 JavaScript -- 终极目标
- Web 服务器基准测试:Go vs. Node.js vs. Nim vs. Bun
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)