在我在 macOS 上的设置中,我正在使用多个 JDK,通过 /usr/libexec/java_home
工具在它们之间切换,类似于 此 SO 答案 中描述的方法
升级到 macOS Big Sur v11.0.1 后,我的 JAVA_HOME 设置停止工作,始终报告相同的 java 版本:
% /usr/libexec/java_home -V
Matching Java Virtual Machines (5):
11.0.8 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 11" /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
1.8.162.12 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
1.8.0_162 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
1.8.0_45 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
1.7.0_45 (x86_64) "Oracle Corporation" - "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
% /usr/libexec/java_home -v 1.8.162.12
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
% /usr/libexec/java_home -v 1.7.0_45
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
原文由 Konstantin 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 macOS Big Sur v11.0.1 中似乎
/usr/libexec/java_home -v ...
命令的行为发生了变化:它对JAVA_HOME
环境变量的先前设置值敏感。确切的行为尚不清楚,我找不到任何关于此的文档,但在我的实验中它报告了已经在
JAVA_HOME
中设置的版本,无论-v
开关:此外,我注意到它没有报告任何内容,如果
JAVA_HOME
已设置,但未指向有效的 java 主目录(也适用于-V
):解决方案是确保在执行
JAVA_HOME
之前 未 设置/usr/libexec/java_home
: