在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
在macOS Big Sur v11.0.1中似乎该/usr/libexec/java_home -v ...
命令的行为已更改:它对JAVA_HOME
环境变量的先前设置值敏感。
确切的行为尚不清楚,我找不到关于它的任何文档,但是在我的实验中JAVA_HOME
,无论-v
切换如何,它都报告了已经在中设置的版本:
% JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home /usr/libexec/java_home -v 1.8.0_162
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
此外,我注意到它没有报告任何内容(如果JAVA_HOME
已设置),但没有指向有效的Java主页(也针对-V
):
% JAVA_HOME=dummy /usr/libexec/java_home -v 1.7.0_45
% JAVA_HOME=dummy /usr/libexec/java_home -V
%
解决方案是确保JAVA_HOME
在未执行之前设置/usr/libexec/java_home
:
% unset JAVA_HOME ; /usr/libexec/java_home -v 1.8.0_162
/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句