MacにJavaをインストールした時の備忘録

MacにJavaをインストールした時のメモを残す。
事前に現在のバージョンを確認。(たぶん、最初から入っているもの)

1$ java --version
2openjdk 16.0.1 2021-04-20
3OpenJDK Runtime Environment AdoptOpenJDK-16.0.1+9 (build 16.0.1+9)
4OpenJDK 64-Bit Server VM AdoptOpenJDK-16.0.1+9 (build 16.0.1+9, mixed mode, sharing)
5$ javac --version
6javac 16.0.1

インストール可能なリストを表示。

1$ brew search jdk
2==> Formulae
3openjdk      openjdk@11   openjdk@17   openjdk@8    jd           mdk          cdk
4
5==> Casks
6adoptopenjdk ✔         jdk-mission-control    oracle-jdk             sapmachine-jdk
7gama-jdk               microsoft-openjdk      oracle-jdk-javadoc     semeru-jdk-open

今回はこの中からopenjdkを選択してインストールする。(▲▲▲はユーザ名)

 1$ brew install openjdk
 2==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/manifests/18.0.2
 3######################################################################## 100.0%
 4==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/blobs/sha256:bbcf2194487d9beeaa1d5e
 5==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:bbcf219
 6######################################################################## 100.0%
 7==> Pouring openjdk--18.0.2.arm64_monterey.bottle.tar.gz
 8==> Caveats
 9For the system Java wrappers to find this JDK, symlink it with
10  sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
11
12openjdk is keg-only, which means it was not symlinked into /opt/homebrew,
13because macOS provides similar software and installing this software in
14parallel can cause all kinds of trouble.
15
16If you need to have openjdk first in your PATH, run:
17  echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> /Users/▲▲▲/.bash_profile
18
19For compilers to find openjdk you may need to set:
20  export CPPFLAGS="-I/opt/homebrew/opt/openjdk/include"
21
22==> Summary
23🍺  /opt/homebrew/Cellar/openjdk/18.0.2: 642 files, 309MB
24==> Running `brew cleanup openjdk`...
25Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
26Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

何やら下の方にメッセージが表示されたのでWeb翻訳してみた。

 1◆翻訳結果
 2システム Java ラッパーがこの JDK を見つけるには、次のようにシンボリック リンクします。
 3   sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /ライブラリ/Java/JavaVirtualMachines/openjdk.jdk
 4
 5openjdk は keg-only です。つまり、/opt/homebrew にシンボリック リンクされていません。
 6macOS は同様のソフトウェアを提供しており、このソフトウェアを
 7パラレルはあらゆる種類の問題を引き起こす可能性があります。
 8
 9PATH に最初に openjdk が必要な場合は、次を実行します。
10   echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> /Users/▲▲▲/.bash_profile
11
12コンパイラが openjdk を見つけるには、次のように設定する必要がある場合があります。
13   export CPPFLAGS="-I/opt/homebrew/opt/openjdk/include"
14
15==>まとめ
16🍺 /opt/homebrew/Cellar/openjdk/18.0.2: 642 ファイル、309MB
17==> `brew cleanup openjdk` を実行中...
18HOMEBREW_NO_INSTALL_CLEANUP を設定して、この動作を無効にします。
19これらのヒントは HOMEBREW_NO_ENV_HINTS で非表示にします (`man brew` を参照)。

最下部のメッセージから判断すると、インストール時のごみ処理を実行しているっぽい。

メッセージに従って指定のコマンドを実行。

1$ sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
2Password:
3$ echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> /Users/▲▲▲/.bash_profile
4$ echo 'export CPPFLAGS="-I/opt/homebrew/opt/openjdk/include"' >> /Users/▲▲▲/.bash_profile

これにて設定完了。
バージョン確認とインストールされた場所の確認。

1$ java --version
2openjdk 18.0.2 2022-07-19
3OpenJDK Runtime Environment Homebrew (build 18.0.2+0)
4OpenJDK 64-Bit Server VM Homebrew (build 18.0.2+0, mixed mode, sharing)
5$ which java
6/opt/homebrew/opt/openjdk/bin/java
7$ which javac
8/opt/homebrew/opt/openjdk/bin/javac

お馴染みのHello Worldプログラムを作成してコンパイル&実行してみる。

 1$ cat Test.java
 2public class Test {
 3  public static void main(String [] args) {
 4    System.out.println("Hello World!");
 5  }
 6}
 7$ javac Test.java
 8$ ls Test*
 9Test.class	Test.java
10$ java Test
11Hello World!

以上