升级到macOS Big Sur v11.0.1后错误的JAVA_HOME [英] Wrong JAVA_HOME after upgrade to macOS Big Sur v11.0.1
问题描述
在macOS上的设置中,我正在使用多个JDK,通过/usr/libexec/java_home
工具在它们之间进行切换,类似于
In my setup on macOS I'm working with several JDKs, switching between them via /usr/libexec/java_home
tool, similar to a method described in this SO answer
升级到macOS Big Sur v11.0.1后,我的JAVA_HOME设置停止工作,始终报告相同的Java版本:
After upgrading to macOS Big Sur v11.0.1, my JAVA_HOME setting stopped working, always reporting the same java version:
% /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
环境变量的先前设置的值敏感.
Seems in macOS Big Sur v11.0.1 the behavior of the /usr/libexec/java_home -v ...
command has changed: it is sensitive to the previously set value of JAVA_HOME
environment variable.
确切的行为尚不清楚,我找不到任何文档,但是在我的实验中,它报告了已经在 JAVA_HOME
中设置的版本,而与 -v
开关:
Exact behavior is not clear, I couldn't find any documentation on this, but in my experiments it reported the version already set in JAVA_HOME
, regardless of the -v
switch:
% 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
也是如此),我注意到它什么也没报告:>
Additionally, I noticed that it reports nothing, if JAVA_HOME
is set, but doesn't point to a valid java home (also for -V
):
% JAVA_HOME=dummy /usr/libexec/java_home -v 1.7.0_45
% JAVA_HOME=dummy /usr/libexec/java_home -V
%
解决方案是确保在执行/usr/libexec/java_home
之前未设置 JAVA_HOME
:
Solution is to ensure JAVA_HOME
is not set before executing /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
这篇关于升级到macOS Big Sur v11.0.1后错误的JAVA_HOME的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!