Mac 安装 OpenJDK

前言

由于工作需要,需要在 Mac 系统中安装多个版本的JDK,并且需要可以方便的版本切换。

找了半天方案,最终还是选择 AdoptOpenJDK 作为JDK的载体。然后用Homebrew来管理它的升级、卸载等。

安装

Requirement

更新

  • 2021-11-15

    更新 homebrew 中的部分依赖后,adoptopenjdk 中安装的 jdk 均无法正常启动 gradle,出现下面的异常。涉及版本:8,11,14

    1
    2
    Error: LinkageError occurred while loading main class org.gradle.launcher.daemon.bootstrap.GradleDaemon
    java.lang.UnsatisfiedLinkError: java/util/zip/Inflater.initIDs()V

    而 openjdk 则无此问题,因此部分依赖改成了 openjdk 来处理。不过需要注意的是,安装完 openjdk 后,需要手动把 openjdk 链接到环境中去,否则无法被其他软件读取到。

    1
    sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk

步骤

1. 只使用最新版本

如果对 JDK 的版本没有要求,而且想要 JDK 可以自动更新到最新,可以直接使用下面的命令安装

1
$ brew install --cask adoptopenjdk

2. 需要特定版本或者多个版本

  1. brew安装AdoptOpenJDK的库

    这样,我们就可以用brew来安装AdoptOpenJDK库下的OpenJDK的任意版本了。

    1
    brew tap AdoptOpenJDK/openjdk
  2. 安装自己需要的JDK

    1
    brew install --cask adoptopenjdk14

    至于可用的版本号,可以查询官方文档。或者使用brew search adoptopenjdk来检索。

3. 管理多个版本

当我们在 Mac 上安装多个版本的 JDK 的时候,系统会默认使用最新的版本。因此我们可以用java_home命令在多个版本之间切换。为了便于操作,我们可以在 shell 的配置文件中添加一个 jdk 函数,用于快捷切换.

  1. ~/.bashrc 或者 ~/.zshrc中,添加下面的代码(如果你用的是bash,就修改bashrc;如果用的是zsh,则需要修改zshrc
1
2
3
4
5
jdk() {
version=$1
export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
java -version
}
  1. 通过source命令,把上面的修改生效

  2. 在命令后中,直接通过 jdk命令,切换版本

1
2
3
jdk 1.8
# 或者
jdk 9

如果想知道电脑上有哪些版本可用,可以用下面的命令查看:

1
2
3
4
5
➜ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
17.0.1 (x86_64) "Homebrew" - "OpenJDK 17.0.1" /usr/local/Cellar/openjdk/17.0.1/libexec/openjdk.jdk/Contents/Home
1.8.0_312 (x86_64) "Homebrew" - "OpenJDK 8" /usr/local/Cellar/openjdk@8/1.8.0+312/libexec/openjdk.jdk/Contents/Home
/usr/local/Cellar/openjdk/17.0.1/libexec/openjdk.jdk/Contents/Home