提示

本文介绍在 Mac 系统下使用 jenv 动态切换环境变量。@ermo

# 使用 jenv 动态切换 JDK 版本

现在 Oracle 和 OpenJDK 的版本已经更新到 JDK18 (opens new window) 了,国内大部分的公司还是在使用 JDK8,开发人员电脑肯定会安装多个版本的 JDK。

更换 JDK 版本就要频繁的配置 JDK 环境变量,jenv (opens new window) 就是要解决这个问题,通过 jenv 命令就可以在动态修改环境变量。

# 安装

Mac 系统推荐使用 Homebrew (opens new window) 安装,使用下面的命令:

brew install jenv

安装完成后输入 jenv 进行验证:

jenv 0.5.5
Usage: jenv <command> [<args>]

Some useful jenv commands are:
   commands    List all available jenv commands
   local       Set or show the local application-specific Java version
   global      Set or show the global Java version
   shell       Set or show the shell-specific Java version
   rehash      Rehash jenv shims (run this after installing executables)
   version     Show the current Java version and its origin
   versions    List all Java versions available to jenv
   which       Display the full path to an executable
   whence      List all Java versions that contain the given executable
   add         Add JDK into jenv. A alias name will be generated by parsing "java -version"

See `jenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/jenv/jenv/blob/master/README.md

然后配置 jenv 环境变量:

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

Mac 安装的的 JDK 目录为 /Library/Java/JavaVirtualMachines/,可以去 Oracle 官网 (opens new window) 下载 JDK。

通过 jenv add 命令将已经安装好的 JDK 配置到 jenv 中。

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home

配置成功控制台会返回:

oracle64-1.8.0.171 added
1.8.0.171 added
1.8 added

通过 jenv versions 查看所有可用的 JDK 版本。

jenv versions

* system (set by /Users/lvtao0420/.jenv/version)
  1.8
  1.8.0.171
  11.0
  11.0.9
  17.0
  17.0.4
  oracle64-1.8.0.171
  oracle64-11.0.9
  oracle64-17.0.4

通过 jenv local 设置当前应用的 JDK 版本。并通过 jenv versions 验证。

jenv local 11.0.9

jenv versions

  system
  1.8
  1.8.0.171
  11.0
* 11.0.9 (set by /Users/lvtao0420/openSource/project/myself/ermocc/.java-version)
  17.0
  17.0.4
  oracle64-1.8.0.171
  oracle64-11.0.9
  oracle64-17.0.4

通过 jenv global 设置全局范围的 JDK 版本。

jenv global 11.0.9

jenv versions

  system
  1.8
  1.8.0.171
  11.0
* 11.0.9 (set by /Users/lvtao0420/openSource/project/myself/ermocc/.java-version)
  17.0
  17.0.4
  oracle64-1.8.0.171
  oracle64-11.0.9
  oracle64-17.0.4

也可以通过 java -version 进行验证:

java -version

java version "11.0.9" 2020-10-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.9+7-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.9+7-LTS, mixed mode)