macOS jenv 的使用

jenv 是一个命令行工具,用于管理多个 Java 环境。它可以帮助我们自动设置 JAVA_HOME 变量。通过 jenv 开发者可以为每个项目设置不同的 JDK 版本,这在多个使用不同版本 JDK 的项目中非常有用。

jenv 提供的主要功能包括:

  • JDK 版本管理:列出和切换不同的 JDK 版本。
  • 全局配置:允许全局配置和切换 JDK 版本。
  • 目录级配置:也称项目级配置,允许为不同的 Java 项目配置和切换 JDK 版本。
  • shell 级配置:允许在当前 shell 中配置和切换 JDK 版本。
  • 自动设置环境变量

但是 jenv 不会自动安装 JDK,它仅仅是管理本机已存在的 JDK 版本,这一点和 nvm 不同,nvm 可以从远程安装 Node。

安装 jenv

macOS 下建议使用 Homebrew 安装 jenv:

1
brew install jenv

配置 jenv

根据不同的 shell 选择不同的命令。

1
2
3
4
5
6
# Shell: bash
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile
# Shell: zsh
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc

要让 jenv 自动设置 JAVA_HOME,需要启用 export 插件:

1
2
eval "$(jenv init -)"
jenv enable-plugin export

添加 JDK

macOS 安装的 JDK 存放位置在 /Library/Java/JavaVirtualMachines~/Library/Java/JavaVirtualMachines下,后者通常是 IDEA 安装的 JDK 位置。

使用 jenv add /jdk/path/ 命令管理此 JDK 版本:

1
2
3
4
5
6
jenv add /Users/yourname/Library/Java/JavaVirtualMachines/openjdk-21.0.2/Contents/Home
# 输出:
# openjdk64-21.0.2 added
# 21.0.2 added
# 21.0 added
# 21 added

可以看到 jenv 将 openjdk 21.0.2 识别成了四个版本,这四个版本其实都对应同一个 JDK。

查看已管理的 JDK

使用 jenv versions 命令查看由 jenv 管理的 JDK:

1
2
3
4
5
6
7
8
9
jenv versions                                                                           
system
* 1.8 (set by /Users/yourname/.jenv/version)
1.8.0.402
21
21.0
21.0.2
openjdk64-21.0.2
zulu64-1.8.0.402

设置 JDK 版本

jenv 可以设置三个级别的 JDK 版本:

  • global 全局级别,最低优先级
  • local 目录级别
  • shell 当前 shell 级别,最高优先级

用法:

1
2
3
jenv global 1.8
jenv local 1.8
jenv shell 1.8

移除已添加的 JDK

1
jenv remove xx xx xx

在上面添加 JDK 章节中说到,由于 jenv 添加 JDK 时,对同一个版本添加了好几个,所以移除 JDK 时也要移除好几个版本。

参考


macOS jenv 的使用
https://cui.cc/macos-jenv/
作者
南山崔崔
发布于
2024年4月2日
许可协议