Xcodeが古いバージョンの場合、openJDK@17のインストールでダウングレードが生じる
疑問
Macbook (macOS Monterey v12.7.6) 環境で以下コードを実行した結果、java -version
の結果が11.0.24と表示されました。
brew install openJDK@17
Xcodeのバージョンが古い場合、なぜjavaがダウングレードしてインストールされてしまうのでしょうか。
Macbook (macOS Monterey v12.7.6) 環境で以下コードを実行した結果、java -version
の結果が11.0.24と表示されました。
brew install openJDK@17
Xcodeのバージョンが古い場合、なぜjavaがダウングレードしてインストールされてしまうのでしょうか。
古い macOS で挙動が変わるような分岐は特になさそうです。一応確認ですが、 Homebrew でインストールした OpenJDK が優先されるような PATH
になっていますか?一度 brew uninstall openjdk@17
して java -version
を確認してみてください。
@A_SAK
Questioner
@usai さん
回答ありがとうございます。
一度 brew uninstall openjdk@17 して java -version を確認してみてください。
当時の環境にて上記操作でjava 11.0.24が出力されたので、疑問に思った次第です。
回避策として、JDK配布ページから.pkgをダウンロードしたのち、PATHを通す対応をとりましたが、疑問として残ったのでQ&Aとして投稿した次第です。
また、実行ログを残しておらず申し訳ありませんが、記憶している限りでは、Xcode14.0.1 is outdated
の警告があったと思います。
上記操作は openjdk@17
を一度 アンインストール してから java -version
を実行してほしいという意味でしたが、それを実行したので合ってますか?
だとすると Homebrew ではない方法で Java 11 がすでにインストール済みで、かつ Homebrew でインストールした openjdk@17
が Java 11 より優先される設定になっていなかった、ということになりますね。ダウングレードではなくて。
openjdk@17
をインストールすると以下のようなメッセージが表示されるはずです。これを実行して初めてシステムの Java ラッパーが openjdk@17
を見つけられるようになります。
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-17.jdk
@A_SAK
Questioner
インストールしている Xcode のバージョンは 14.2 でしょうか?
/usr/libexec/java_home -V
コマンドで、インストールされている Java のリストが表示されるので、v17がインストールされているか確認してください。
デフォルで使用する Java のバージョンを切り替えるには、/usr/libexec/java_home -v 17
コマンドで表示されるパスを、JAVA_HOME
環境変数に設定する必要があります。
/usr/libexec/java_home -v 17
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
java -version
@A_SAK
Questioner
@nak435 さん
回答ありがとうございます。
環境構築当時のバージョンは以下の通りです。
Xcode: 14.0.1
Command Line Tools: 14.2
その際にopenJDK@17やopenJDK@21でインストールしたところ、/usr/libexec/java_home -Vで確認しても17や21が表示されませんでした。
当時はbrewコマンドではなく、Eclipse Adoptiumで配布されている.pkgファイルをダウンロード、展開して手動でPATHを通すことで解決しましたが、brew install openJDL@17
でv17がインストール出来ていなかったことに対して疑問に思った次第です。
長文失礼しました。
自分のmacOS 12.7.6
で、brew install openJDL@17
を実行してみたところ、散々依存ライブラリをインストールしたあげく、最後の jdk17u-jdk-17.0.14-ga
のビルドが次のエラーとなりインストールできませんでした。
Error: You are using macOS 12.
We (and Apple) do not provide support for this old version.
It is expected behaviour that some formulae will fail to build in this old version.
@A_SAK
Questioner
ご確認いただきありがとうございます。
今後レガシーPCを扱う際は、brewを使わない回避策も頭に入れておこうと思います。