AndroidやサーバーサイドでJavaの設定を可変にしたい時があると思います。
JAVA_HOMEが変わらなくて色々別の場所を疑ってしまったので備忘録として記載します。
起こったこと
JAVA_HOMEがJDK21のまま固定される。
原因
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
21.0.6 (arm64) "Oracle Corporation" - "Java SE 21.0.6" /Library/Java/JavaVirtualMachines/jdk-21.0.6.jdk/Contents/Home
17.0.11 (arm64) "Amazon.com Inc." - "Amazon Corretto 17" /Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home
$ vi ~/.zshrc
export JAVA_HOME=`/usr/libexec/java_home -v "Java SE 21.0.6"`
rem これだと、JDK21のPathを返してしまう
export JAVA_HOME=`/usr/libexec/java_home -v "Amazon Corretto 17"`
rem これだと、JDK17のパスを返す
export JAVA_HOME=`/usr/libexec/java_home -v "17.0.11"`
$ source ~/.zshrc
$ /usr/libexec/java_home -v "17.0.11"
/Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home
rem Java17を使用中の段階は正しいものと勘違いしてしまう
$ /usr/libexec/java_home -v "Amazon Corretto 17"
/Library/Java/JavaVirtualMachines/jdk-21.0.6.jdk/Contents/Home
疑ってしまった範囲
- InteliJが上流のJAVA_HOMEを作ったのか?
- Oracleがインストーラー経由で新しいJAVA_HOMEを作ったのか?
(初めてインストーラー経由でJavaをインストールしたため、
Oracleが消せない呪いをMacに残したのかと思って狂気でした)
結論
Amazonが独自のJDKを作ってその対応が不完全だった。
CodeCommmitも新規サービス消えたけど、Amazon嫌いです。