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に対応していました。
上記のページを確認すると、OSの対応状況は次のようになっていました。
Arch | OS | 対応状況 |
---|---|---|
Intel | Big Sur | OK |
Intel | Catalina | OK |
Intel | Mojave | OK |
Apple Silicon | Big Sur | OK |
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
を実行して、認識されるか確認します。このページの冒頭にあるエラーメッセージが出力されなければ成功です。