MacにOpenJDKをインストールする(2019年現在)


概要

2019年現在、以前とまでと違いJDKのライセンス形態がアップデートされ、簡単にJDKをインストールすることができなくなりました。

そのため、「Mac JDK Install」などでググって環境構築する入門者たちはとてもつまづきやすいのではないかと感じ、個人的にも毎回ググって共有することが手間になってきたため手順をまとめることにする。

前提

MacユーザーがJDKを必要とした環境(Android開発やJenkinsなど)を用意する

方法

色々ググるとOracleからJDKをインストールする手順が多く見かけるが、2019年現在では状況が変わり、OracleからJDKをインストールするよりもOpenJDKをインストールしてJavaを扱えるように対応すると良い。

OpenJDKに関しては、きしだ(@nowokay)さんの以下の記事を参考にしてください。

OpenJDKのインストール方法

大枠の手順は、@spaciba_h_t さんの以下の記事を参考にすると良いです。

バージョンについて

2019/11現在のOpenJDKの安定板バージョンは、JDK 13のようです。

Jenkinsについて

スマホアプリを開発しているエンジニアであれば、MacMini/MacPro(ゴミ箱版)などにJenkinsを入れてCI環境を作るなんて珍しく無いと思います。

そんなJenkinsをMacに環境を作る際にOpenJDKのバージョンがJDK 13では以下のようにエラーとなります。

$ /usr/libexec/java_home  -V
Matching Java Virtual Machines (1):
    13.0.1, x86_64: "OpenJDK 13.0.1"    /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home

# .bash_profileの設定省略...

$ java --version
openjdk 13.0.1 2019-10-15
OpenJDK Runtime Environment (build 13.0.1+9)
OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)

$ java -jar jenkins.war 
11月 19, 2019 3:13:40 午後 Main verifyJavaVersion
重大: Running with Java class version 57 which is not in the list of supported versions: [52, 55]. Run with the --enable-future-java flag to enable such behavior. See https://jenkins.io/redirect/java-support/
java.lang.UnsupportedClassVersionError: 57.0
    at Main.verifyJavaVersion(Main.java:174)
    at Main.main(Main.java:142)

Jenkins requires Java versions [8, 11] but you are running with Java 13 from /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
java.lang.UnsupportedClassVersionError: 57.0
    at Main.verifyJavaVersion(Main.java:174)
    at Main.main(Main.java:142)

2019年現在のJenkins公式ページのJava requirementsでは、OpenJDKのバージョンは以下の2点をサポートしている模様です。

  • OpenJDK JDK / JRE 8 - 64 bits
  • OpenJDK JDK / JRE 11 - 64 bits

そのため古いJDKバージョンをインストールするには、Archived OpenJDK General-Availability Releasesのページから特定のバージョンのJDKをインストールし、再度環境設定を行う必要があります。

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    13.0.1, x86_64: "OpenJDK 13.0.1"    /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
    11.0.2, x86_64: "OpenJDK 11.0.2"    /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home

# .bash_profileの設定省略...

$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

$ java -jar jenkins.war 
Running from: /Users/gremito/jenkins.war
webroot: $user.home/.jenkins
2019-11-19 05:51:56.703+0000 [id=1] INFO    org.eclipse.jetty.util.log.Log#initialized: Logging initialized @506ms to org.eclipse.jetty.util.log.JavaUtilLog

...

ちなみにMacにJenkinsの環境を作る方法は、@t_nさんの以下のQiita記事と公式のページが参考になります。