A_SAK
@A_SAK

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Xcodeが古いバージョンの場合、openJDK@17のインストールでダウングレードが生じる

疑問

Macbook (macOS Monterey v12.7.6) 環境で以下コードを実行した結果、java -versionの結果が11.0.24と表示されました。

brew install openJDK@17

Xcodeのバージョンが古い場合、なぜjavaがダウングレードしてインストールされてしまうのでしょうか。

0

2Answer

古い macOS で挙動が変わるような分岐は特になさそうです。一応確認ですが、 Homebrew でインストールした OpenJDK が優先されるような PATH になっていますか?一度 brew uninstall openjdk@17 して java -version を確認してみてください。

1Like

Comments

  1. @A_SAK

    Questioner

    @usai さん
    回答ありがとうございます。

    一度 brew uninstall openjdk@17 して java -version を確認してみてください。

    当時の環境にて上記操作でjava 11.0.24が出力されたので、疑問に思った次第です。
    回避策として、JDK配布ページから.pkgをダウンロードしたのち、PATHを通す対応をとりましたが、疑問として残ったのでQ&Aとして投稿した次第です。
    また、実行ログを残しておらず申し訳ありませんが、記憶している限りでは、Xcode14.0.1 is outdated の警告があったと思います。

  2. 上記操作は 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
    
  3. @A_SAK

    Questioner

    言葉が足りず申し訳ありませんでした。
    一度ダウンロードしたopenJDK@17や@21を削除したうえでもう一度導入してほしいという理解でよろしければ、brewを実行した結果@11が優先されてしまっていたという結果で納得できそうです。コードの提供もありがとうございました。

Comments

  1. /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
    
  2. @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がインストール出来ていなかったことに対して疑問に思った次第です。

    長文失礼しました。

  3. 自分の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.
    
  4. @A_SAK

    Questioner

    ご確認いただきありがとうございます。
    今後レガシーPCを扱う際は、brewを使わない回避策も頭に入れておこうと思います。

Your answer might help someone💌