[英]Java works not well after upgrage Mac OS to Big Sur(v11.0.1)
[英]Wrong JAVA_HOME after upgrade to macOS Big Sur v11.0.1
在我在 macOS 上的設置中,我正在使用幾個 JDK,通過/usr/libexec/java_home
工具在它們之間切換,類似於這個 SO answer中描述的方法
升級到 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 home(也適用於-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
:
% unset JAVA_HOME ; /usr/libexec/java_home -v 1.8.0_162
/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
我從 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)
檢查您的機器上已經安裝了哪些版本的 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
只獲取您需要的一項:
/usr/libexec/java_home -v 1.8.0_281
/Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home
在 Catalina 和 Big Sur - 有 Z-shell ,要添加 JAVA_HOME 等環境變量,有兩個文件:~/.zshenv 和 ~/.zshrc,我無法讓它與第一個一起工作。 它對我來說是這樣的:
nano ~/.zshrc
將此行添加到該文件中:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0_281)
按 Ctrl+X 並保存更改。
然后運行命令將更改應用到當前終端:
source ~/.zshrc
之后,您可以檢查一切是否與命令一起工作:
echo $JAVA_HOME
it will print you: /Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home
重新啟動將使用 JAVA_HOME 變量的終端和程序。 對我來說是 Android Studio。 現在一切正常。 我是 Mac OS 的新手,我花了 4 個小時來解決這個問題。 使用 Windows 只需一分鍾即可完成:)
正如我嘗試的那樣。 我只是刪除/Library/Internet Plug-Ins/JavaAppletPlugin.plugin
並重新登錄。 然后一切正常。
對我來說, https://developer.apple.com/forums/thread/666681在解決方案上花了很多時間后工作了。
我只是調用以下命令
sudo rm -fr /Library/Internet\\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefpane
安裝 Big Sur 后出現此問題。
首先,我開始從系統中卸載所有 JDK:
sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
sudo rm -rf /Library/Application\ Support/Oracle/Java/
sudo rm -rf /Library/Java/JavaVirtualMachines
然后,我安裝了我將要使用的 JDK:
brew tap AdoptOpenJDK/openjdk
brew install --cask adoptopenjdk<version>
對我來說,它完全壞了。 取消設置 JAVA_HOME,/usr/libexec/java_home 給出:
/庫/互聯網插件/JavaAppletPlugin.plugin/Contents/Home
$> /usr/libexec/java_home -v "1.8.0" 似乎可以訪問確切的 jdk(如果存在)。 如果已安裝,則忽略“插件”。 這些報價是在互聯網上的隨機位置推薦的。 它們也顯示在手冊頁中。
macOS 中的/usr/libexec/java_home
工具將為您提供安裝的最新 Java 版本的位置。 從終端調用它以獲得類似於以下內容的響應:
/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
導航到根目錄並打開.zprofile
文件。
cd ~
open .zprofile
如果未找到該文件,請使用echo > .zprofile
命令創建一個。
使用open .zprofile
打開文件。 這應該在文本編輯器中打開它。
將/usr/libexec/java_home
工具的響應添加到文件中,如下所示:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
我的解決方案是創建指向您的 JDK 文件的鏈接。 顯然,Teradata 工作室正在執行錯誤的路徑 sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/server/libjvm.dylib /Library/Java/JavaVirtualMachines/jdk1.8.0 _202.jdk/Contents/Home/lib/libserver.dylib
同意@Konstantin 。 在 Big Sur 升級后,我遇到了同樣的問題。
解決此問題需要遵循的步驟是:
匹配Java虛擬機(二):
1.8.221.11 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
1.8.0_221 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home
/庫/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home
export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home'
echo $JAVA_HOME
/庫/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.