Kon*_*tin 32 java macos java-home macos-big-sur
在我在 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
Run Code Online (Sandbox Code Playgroud)
Kon*_*tin 50
似乎在 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
Run Code Online (Sandbox Code Playgroud)
此外,我注意到它不报告任何内容,如果JAVA_HOME
设置,但不指向有效的 Java 主页(也为-V
):
% JAVA_HOME=dummy /usr/libexec/java_home -v 1.7.0_45
% JAVA_HOME=dummy /usr/libexec/java_home -V
%
Run Code Online (Sandbox Code Playgroud)
解决方案是确保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
Run Code Online (Sandbox Code Playgroud)
yoz*_*hik 36
我从 2021 年 2 月 18 日开始使用 Big Sur 11.2.1。我对 JAVA_HOME 路径配置有同样的问题。在阅读了大量信息后,我解决了下一个问题:
安装 JDK 8:https : //www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html Java SE 开发工具包 8u281
像往常一样在 MacOS Big Sur 上安装它。
检查JDK版本:
java -version
java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 1.8.0_281-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode)
Run Code Online (Sandbox Code Playgroud)
检查您的机器上已经安装了哪些版本的 JDK:
/usr/libexec/java_home -V
Matching Java Virtual Machines (2):
1.8.281.09 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
1.8.0_281 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
Run Code Online (Sandbox Code Playgroud)
只获取您需要的一项:
/usr/libexec/java_home -v 1.8.0_281
/Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)
在 Catalina 和 Big Sur - 有 Z-shell ,要添加 JAVA_HOME 等环境变量,有两个文件:~/.zshenv 和 ~/.zshrc,我无法让它与第一个一起工作。它对我来说是这样的:
nano ~/.zshrc
Run Code Online (Sandbox Code Playgroud)
将此行添加到该文件中:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0_281)
Run Code Online (Sandbox Code Playgroud)
按 Ctrl+X 并保存更改。
然后运行命令将更改应用到当前终端:
source ~/.zshrc
Run Code Online (Sandbox Code Playgroud)
之后,您可以检查一切是否与命令一起工作:
echo $JAVA_HOME
it will print you: /Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)
重新启动将使用 JAVA_HOME 变量的终端和程序。对我来说是 Android Studio。现在一切正常。我是 Mac OS 的新手,我花了 4 个小时来解决这个问题。使用 Windows 只需一分钟即可完成:)
lan*_*ung 23
正如我尝试的那样。我只是删除/Library/Internet Plug-Ins/JavaAppletPlugin.plugin
并重新登录。然后一切正常。
小智 8
对我来说,https://developer.apple.com/forums/thread/666681在解决方案上花了很多时间后工作了。
我只是调用以下命令
sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefpane
归档时间: |
|
查看次数: |
24140 次 |
最近记录: |