LoginSignup
9
8

More than 1 year has passed since last update.

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

Last updated at Posted at 2019-11-19

概要

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のようです。

スクリーンショット 2019-11-19 15.18.25.png

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記事と公式のページが参考になります。

追記 2022/04: M1にSDKMANでJavaをインストールしてみた

% java -version 
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.

% curl -s "https://get.sdkman.io" | bash

                                -+syyyyyyys:
                            `/yho:`       -yd.
                         `/yh/`             +m.
                       .oho.                 hy                          .`
                     .sh/`                   :N`                `-/o`  `+dyyo:.
                   .yh:`                     `M-          `-/osysoym  :hs` `-+sys:      hhyssssssssy+
                 .sh:`                       `N:          ms/-``  yy.yh-      -hy.    `.N-````````+N.
               `od/`                         `N-       -/oM-      ddd+`     `sd:     hNNm        -N:
              :do`                           .M.       dMMM-     `ms.      /d+`     `NMMs       `do
            .yy-                             :N`    ```mMMM.      -      -hy.       /MMM:       yh
          `+d+`           `:/oo/`       `-/osyh/ossssssdNMM`           .sh:         yMMN`      /m.
         -dh-           :ymNMMMMy  `-/shmNm-`:N/-.``   `.sN            /N-         `NMMy      .m/
       `oNs`          -hysosmMMMMydmNmds+-.:ohm           :             sd`        :MMM/      yy
      .hN+           /d:    -MMMmhs/-.`   .MMMh   .ss+-                 `yy`       sMMN`     :N.
     :mN/           `N/     `o/-`         :MMMo   +MMMN-         .`      `ds       mMMh      do
    /NN/            `N+....--:/+oooosooo+:sMMM:   hMMMM:        `my       .m+     -MMM+     :N.
   /NMo              -+ooooo+/:-....`...:+hNMN.  `NMMMd`        .MM/       -m:    oMMN.     hs
  -NMd`                                    :mm   -MMMm- .s/     -MMm.       /m-   mMMd     -N.
 `mMM/                                      .-   /MMh. -dMo     -MMMy        od. .MMMs..---yh
 +MMM.                                           sNo`.sNMM+     :MMMM/        sh`+MMMNmNm+++-
 mMMM-                                           /--ohmMMM+     :MMMMm.       `hyymmmdddo
 MMMMh.                  ````                  `-+yy/`yMMM/     :MMMMMy       -sm:.``..-:-.`
 dMMMMmo-.``````..-:/osyhddddho.           `+shdh+.   hMMM:     :MmMMMM/   ./yy/` `:sys+/+sh/
 .dMMMMMMmdddddmmNMMMNNNNNMMMMMs           sNdo-      dMMM-  `-/yd/MMMMm-:sy+.   :hs-      /N`
  `/ymNNNNNNNmmdys+/::----/dMMm:          +m-         mMMM+ohmo/.` sMMMMdo-    .om:       `sh
     `.-----+/.`       `.-+hh/`         `od.          NMMNmds/     `mmy:`     +mMy      `:yy.
           /moyso+//+ossso:.           .yy`          `dy+:`         ..       :MMMN+---/oys:
         /+m:  `.-:::-`               /d+                                    +MMMMMMMNh:`
        +MN/                        -yh.                                     `+hddhy+.
       /MM+                       .sh:
      :NMo                      -sh/
     -NMs                    `/yy:
    .NMy                  `:sh+.
   `mMm`               ./yds-
  `dMMMmyo:-.````.-:oymNy:`
  +NMMMMMMMMMMMMMMMMms:`
    -+shmNMMMNmdy+:`


                                                                 Now attempting installation...


Looking for a previous installation of SDKMAN...
Looking for unzip...
Looking for zip...
Looking for curl...
Looking for sed...
Installing SDKMAN scripts...
Create distribution directories...
Getting available candidates...
Prime the config file...
Download script archive...
######################################################################## 100.0%-######################################################################## 100.0%
Extract script archive...
Install scripts...
Set version to 5.15.0 ...
Attempt update of login bash profile on OSX...
Added sdkman init snippet to /Users/gremito/.bash_profile
Attempt update of zsh profile...
Updated existing /Users/gremito/.zshrc



All done!


You are subscribed to the STABLE channel.

Please open a new terminal, or run the following in the existing one:

    source "/Users/gremito/.sdkman/bin/sdkman-init.sh"

Then issue the following command:

    sdk help

Enjoy!!!

% source "$HOME/.sdkman/bin/sdkman-init.sh"
% sdk install java
==== BROADCAST =================================================================
* 2022-04-22: groovy 4.0.2 available on SDKMAN!
* 2022-04-21: springboot 2.6.7 available on SDKMAN!
* 2022-04-21: springboot 2.5.13 available on SDKMAN!
================================================================================

Downloading: java 17.0.2-tem

In progress...

##################################################################################################################################################### 100.0%##################################################################################################################################################### 100.0%

Repackaging Java 17.0.2-tem...

Done repackaging...
Cleaning up residual files...

Installing: java 17.0.2-tem
Done installing!


Setting java 17.0.2-tem as default.

% java -version                            
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment Temurin-17.0.2+8 (build 17.0.2+8)
OpenJDK 64-Bit Server VM Temurin-17.0.2+8 (build 17.0.2+8, mixed mode)

 

9
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8