M1 Mac への JDK のセットアップ

flutter doctorで指摘された M1 Mac への JDK のインストールです。

Flutterのセットアップ方法については次の記事を参照してください。

目次

JDK いろいろあるけど

Java Runtime のセットアップ、まずはダウンロードですが、気づけば JDK もいろいろあります。

flutter doctorには次のようなメッセージが表示されていました。

The operation couldn’t be completed. Unable to locate a Java Runtime.

Please visit http://www.java.com for information on installing Java.

指定されたページからダウンロードできるのは、Oracle版のJavaです。この記事執筆時点のライセンスでは、次のように記述されていて、個人的に使用する場合や開発目的であれば無償で利用可能です。

Oracle Javaライセンスの重要な更新
Oracle Javaライセンスは、2019年4月16日以降のリリースに対して変更されました。

新しいOracle Java SEのOracle Technology Networkライセンス契約は、以前のOracle Javaライセンスとは大きく異なります。
新しいライセンスでは、個人的な使用や開発目的での使用など、特定の使用が無償で許可されますが、以前のOracle Javaライセンスの下で認可されたその他の使用はできなくなりました。
この製品をダウンロードして使用する前に、条件をよくお読みください。
FAQがこちらでご覧いただけます。

商用ライセンスおよびサポートは、安価なJava SEサブスクリプションにより提供されます。

オラクル社は、オープン・ソースのGPLライセンスの下、jdk.java.netでOpenJDKの最新リリースも提供しています。

https://www.java.com/ja/download/ より引用

https://www.java.com/ja/download/ より引用

せっかくなので、他のディストリビューションも調べて、Apple Siliconに対応しているものを探してみました。

OpenJDK

Homebrew も M1 Mac 対応が進んで、今は Apple Silicon ネイティブ対応しています。Homebrew経由でインストール可能なOpenJDKもApple Siliconに対応していました。

openjdk — Homebrew Formulae

上記のページを確認すると、OSの対応状況は次のようになっていました。

ArchOS対応状況
IntelBig SurOK
IntelCatalinaOK
IntelMojaveOK
Apple SiliconBig SurOK

OpenJDKのインストール

Homebrew 経由で OpenJDK をインストールします。

$ brew install openjdk

インストールが完了すると、次のようなメッセージが表示されます。

For the system Java wrappers to find this JDK, symlink it with
  sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
This is a beta version of openjdk for Apple Silicon
(openjdk 16 preview).

openjdk is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS provides similar software and installing this software in
parallel can cause all kinds of trouble.

If you need to have openjdk first in your PATH, run:
  echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ~/.zshrc

For compilers to find openjdk you may need to set:
  export CPPFLAGS="-I/opt/homebrew/opt/openjdk/include"

この指示に従って、次の2つの設定を行います。

$ sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

$PATHの方は、既に設定されているものなどもあるので、echoを使わずに、.zshrcファイルを編集して、"/opt/homebrew/opt/openjdk/bin:$PATH"を追加します。

例えば、私の環境の場合は次のようになります。

export PATH=/Applications/CMake.app/Contents/bin:~/Documents/src/flutter/bin:/opt/homebrew/opt/openjdk/bin:$PATH

確認

ターミナルを再起動してから、javaのバージョンを表示して設定できたか確認します。

$ java --version
openjdk 16 2021-03-16
OpenJDK Runtime Environment (build 16+14)
OpenJDK 64-Bit Server VM (build 16+14, mixed mode)

Flutterを使う場合には、更にflutter doctorを実行して、認識されるか確認します。このページの冒頭にあるエラーメッセージが出力されなければ成功です。

著書紹介

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Akira Hayashi (林 晃)のアバター Akira Hayashi (林 晃) Representative(代表), Software Engineer(ソフトウェアエンジニア)

アールケー開発代表。Appleプラットフォーム向けの開発を専門としているソフトウェアエンジニア。ソフトウェアの受託開発、技術書執筆、技術指導・セミナー講師。note, Medium, LinkedIn
-
Representative of RK Kaihatsu. Software Engineer Specializing in Development for the Apple Platform. Specializing in contract software development, technical writing, and serving as a tech workshop lecturer. note, Medium, LinkedIn

目次