Mac使用jenv管理多个版本jdk

同时开发维护的多个项目使用了不同的jdk版本(jdk1.7  jdk1.8  jdk17)编译,如何在编译时把当前的环境变量自动切换到合适的版本,并且不影响其他项目jdk版本呢?在node中有个nvm ,非常容易切换node版本。java中也有类似工具jenv

mac上需要有homebrew,没有的话需要先安装,然后用下面命令安装openjdk,当然你也可以自己到oracle官网下载oracle jdk的dmg包安装。

# 查看本机所有jdk和所在目录
$ /usr/libexec/java_home -V
# 添加历史版本仓库,一个软件有很多版本,brew install时只会安装最新版,我们想安装历史版本就需要这个仓库
$ brew tap homebrew/cask-versions
# 搜索openjdk版本
$ brew search openjdk
# 例如安装openjdk@11
$ brew install openjdk@11
# 安装完成打印的日志,把jdk11目录链接到jdk默认目录
$ sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk


 

 安装jenv

$ brew install jenv
# 把安装打印日志中的两行环境变量设置保存到 ~/.zshrc 或 ~/.bash_profile 末尾
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(jenv init -)"' >> ~/.zshrc

使用jenv来管理jdk版本

 1. 把本机安装的jdk加入到jenv的版本库中

# 查看本机所有jdk版本和目录
$ 
# 查看jenv下所有jdk版本
$ jenv versions
# 添加jenv jdk,只需要指定目录,会自动创建版本名称,如果大家都自己指定jdk名称会在项目中产生混乱,你的jdk名称我不认识,我设置的名称你不认识,所以指定名称的方式已经废弃了(jenv jdk8 /jdk/path)
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home
$ jenv add /usr/local/Cellar/openjdk@11/11.0.15/libexec/openjdk.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/jdk-17.0.3.1.jdk/Contents/Home
# 删除jenv jdk
$ jenv remove 11.0 11.0.15 openjdk64-11.0.15

 2. 使用jenv来管理jdk版本,有shell/local/global三种模式

#设置当前shell下jdk版本
$ jenv shell 1.8
#设置本目录下jdk版本,默认生成 .java-version 文件,文件里面写入了jdk版本,适合java项目中使用
$ jenv local 17.0
#设置全局jdk版本
$ jenv global 17.0

设置全局jdk版本不影响当前目录的.java-version中的版本,新开terminal时默认使用global设置的版本

 

 至此,基本玩法实验结束,项目中推荐使用jenv local xxx  设置jdk版本,这样命令行mvn gradle编译代码是自动就是这个版本;如果是服务器,可以使用jenv shell xxx方式来灵活设置编译使用的jdk。

如果你使用的是windows,可能不如mac这么灵活,但也可以随心所欲切换jdk版本,查看这个项目来完成你的设置。

GitHub - FelixSelter/JEnv-for-Windows: Change your current Java version with one lineicon-default.png?t=M4ADhttps://github.com/FelixSelter/JEnv-for-Windows 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值