安裝完成後,終端機的 java -version 還是舊版本,甚至 javac 直接顯示找不到指令。
最快解法:先查目前實際呼叫的 JDK 路徑,不要先重裝。 多數 Mac Java 25 版本不對的情況,原因是 macOS 預設 JDK、JAVA_HOME、PATH 或 IDE 專案設定仍指向舊版本。若學校電腦限制修改環境,就改用獲得授權的獨立 Mac,不要繞過管理權限。
這篇適合已安裝 Java 25 官方 macOS JDK,卻仍看到舊版的零基礎學生。
如果 IntelliJ IDEA、VS Code 或課程專案無法識別新 JDK,或你想在遠端 Mac 建立乾淨的 Java 學習環境,也可以照著做。
01 先判斷:舊版本究竟卡在哪裡
把 JDK 想成書櫃裡的教材。你可能已經把 Java 25 放進書櫃,但桌面上仍攤著舊教材。安裝位置存在,不代表終端機目前會使用它。
先開啟「終端機」,逐行執行:
java -version
javac -version
which java
which javac
/usr/libexec/java_home -V
每個結果都要判讀,不要只看最後一行:
| 檢查項目 | 你要確認的結果 | 代表的問題 |
|---|---|---|
java -version |
顯示預期的 Java 25 版本 | 執行環境是否切換成功 |
javac -version |
能顯示同一個主要版本 | 是否安裝完整 JDK |
which java |
顯示目前被呼叫的執行檔路徑 | PATH 是否指向舊位置 |
which javac |
有路徑且不是空白 | 編譯器是否可用 |
java_home -V |
清單中出現已安裝的 JDK | macOS 是否辨識該 JDK |
Oracle 的 macOS 安裝文件說明了 JDK 的安裝位置與 java_home 用法;因此,java_home -V 找得到 Java 25,但 java -version 仍是舊版時,通常不是安裝失敗,而是預設選擇或環境變數尚未同步。查看 Oracle 的 JDK 目錄與選擇說明
Mac 安裝 JDK 後為什麼版本沒有變?
因為「已安裝的 JDK 清單」與「目前命令使用的 JDK」是兩件事。先比較 java_home -V、which java 和版本輸出;如果路徑不同,先修正指向,不要重複下載安裝檔。
02 第一步:確認你裝的是完整 JDK,而不是只有執行環境
Java 執行環境只能啟動現成程式;JDK 才包含編譯 Java 原始碼需要的 javac。學習 Java 時,能執行 java 不代表你已經具備寫程式、編譯和測試的完整環境。
Java 25 已安裝但終端機找不到 javac,先看哪裡?
先執行:
command -v javac
javac -version
若 command -v javac 沒有輸出,或 javac -version 顯示找不到指令,請回到下載來源確認安裝的是 macOS 對應的完整 JDK。不要下載來源不明的修復腳本,也不要刪除 macOS 受保護目錄中的系統工具。
如果 javac 有輸出,但版本和 java -version 不一致,代表兩個命令可能由不同路徑提供。這時重新執行 which java 和 which javac,把路徑記下來,再處理 PATH 或 JAVA_HOME。
| 現象 | 優先處理方式 | 停止條件 |
|---|---|---|
java 和 javac 都是舊版 |
先檢查預設 JDK 與 PATH |
java_home -V 沒有 Java 25 才考慮重新安裝 |
只有 java 可用 |
確認是否為完整 JDK | 找到完整 JDK 前不要開始課程專案 |
javac 存在但版本不同 |
比對兩個命令的實際路徑 | 路徑一致且版本一致即可進入 IDE 檢查 |
| 安裝被學校權限阻擋 | 向管理員申請授權環境 | 不要嘗試繞過限制 |
03 第二步:讓預設 JDK、JAVA_HOME 與 PATH 對齊
JAVA_HOME 就像課程選課表上的教室門牌。你告訴工具「這門課要去哪一間教室」,工具才會找到正確的 JDK。它不一定等於你在終端機直接輸入 java 時使用的路徑,所以需要一起核對。
先查看目前設定:
echo "$JAVA_HOME"
echo "$PATH"
/usr/libexec/java_home -V
若你只想在目前終端機視窗暫時切換,可以使用 Oracle 文件所示的 java_home 方式:
export JAVA_HOME=$(/usr/libexec/java_home -v 25)
export PATH="$JAVA_HOME/bin:$PATH"
接著再次檢查:
echo "$JAVA_HOME"
java -version
javac -version
JAVA_HOME 應指向 Java 25 的 JDK 目錄,兩個版本命令也應一致。這類設定只對目前終端機工作階段有效;關閉視窗後失效,並不表示 JDK 消失。
macOS 怎麼把 Java 25 設為預設版本?
先確認 /usr/libexec/java_home -v 25 能回傳路徑,再把相同的設定放入你實際使用的 Shell 設定檔。不要盲目同時修改多個檔案。你可以先執行:
echo "$SHELL"
再依照顯示的 Shell,打開對應設定檔。加入設定前,先備份檔案:
cp ~/.zshrc ~/.zshrc.java-backup
如果你的環境使用其他設定檔,備份目標要換成實際檔名。加入後重新開啟終端機,再驗證 java、javac 和 JAVA_HOME。若結果變得更混亂,先恢復備份:
mv ~/.zshrc.java-backup ~/.zshrc
若設定檔中已經有多行 JAVA_HOME 或多次把不同 JDK 的 bin 放進 PATH,請保留一套清楚的設定。重複追加路徑,常會讓你以為切換成功,實際上仍由較早出現的舊路徑優先。
04 第三步:排除 Apple Silicon 安裝包選錯
Apple Silicon 不是一個 Java 版本,而是 Mac 的處理器架構。下載 JDK 時,常見選項會分成 Apple Silicon 使用的 AArch64,以及 Intel Mac 使用的 x64。Oracle 的 JDK 25 macOS 下載與安裝資料有明確區分這兩種架構。核對 Oracle 的 macOS 架構與下載選項
先在「系統設定」的「一般」與「關於本機」查看處理器資訊,或執行:
uname -m
常見判讀方式是:輸出 arm64,表示你應核對 AArch64 安裝包;輸出 x86_64,表示你應核對 x64 安裝包。這裡只以系統實際輸出為準,不要只看遠端 Mac 的設備名稱。使用遠端 Mac 時,請查看交付資料或登入後的系統資訊。
選錯架構可能導致安裝失敗、工具啟動異常或後續相容性問題。不要在沒有官方依據或實測資料時,推斷某個安裝包一定有多少性能差距。先確認架構,再重新核對 JDK 清單,通常比反覆修改環境變數更有效。
05 第四步:終端機正常,IDE 仍可能用舊 JDK
終端機預設版本、IDE 自身的執行環境,以及專案所選的 JDK,可能是三個獨立設定。JetBrains 文件也將 SDK 設定與專案、模組設定分開說明。查看 IntelliJ IDEA 的 SDK 設定原則
IntelliJ IDEA 為什麼仍然使用舊版 JDK?
因為 IDE 不一定直接沿用你剛剛在終端機設定的 JAVA_HOME。請在 IDE 的專案設定中查看 Project SDK,再檢查模組或個別執行設定是否另有指定。
不要先重建整個專案。建立一個最小檔案:
public class Main {
public static void main(String[] args) {
System.out.println(System.getProperty("java.version"));
System.out.println(System.getProperty("java.home"));
}
}
在終端機編譯與執行:
javac Main.java
java Main
再用 IDE 執行同一個檔案。若兩次輸出的 java.version 或 java.home 不同,問題就在 IDE 的 SDK、模組或執行設定,而不是 Java 原始碼。這個方法也適用於 VS Code:先確認它的 Java 擴充功能所使用的 JDK,再比較專案設定,不必把排錯擴寫成完整 IDE 教學。
06 用條件分支決定:繼續修本機,還是換乾淨環境
依照下面的條件處理,避免在錯誤方向上重裝很多次:
- 若
java_home -V找得到 Java 25,javac可用,而且終端機兩個版本一致,則只需修正 IDE 的 Project SDK。 - 若 JDK 清單找不到 Java 25,則先核對處理器架構與官方安裝包;完成合法安裝後再檢查環境變數。
- 若終端機能編譯最小程式,但 IDE 使用舊版,則保留本機 JDK,改查 IDE 的專案與模組設定。
- 若學校電腦沒有管理員權限,且安裝或設定被政策阻擋,則向學校申請授權;若無法取得授權,就改用獨立的真實 Mac 環境,不要繞過限制。
- 若你已經改過多份 Shell 設定檔,且每次重新登入結果都不同,則先用備份恢復,再只保留一套明確的
JAVA_HOME與PATH設定。 - 若本機只需要長期固定執行大量課程專案,則整理本機環境或自購設備可能更合適;若只是短期課程、作業或測試,才考慮獨立的遠端 Mac 學習環境。
07 最後驗收:不要只看版本文字
完成修復後,逐項勾選:
- [ ]
java_home -V能列出 Java 25,且架構與你的 Mac 相符。 - [ ]
java -version顯示預期版本。 - [ ]
javac -version可正常回應,且與java一致。 - [ ]
javac Main.java能完成編譯。 - [ ]
java Main能執行,並輸出實際 Java 版本與 JDK 路徑。 - [ ] IDE 執行同一個
Main.java時,版本與路徑沒有偏離。 - [ ] 關閉並重新開啟終端機後,設定仍然保留。
- [ ] 課程專案已保存到你有權限存取的位置,並能再次開啟。
Java 的第一個程式流程可對照 Dev.java 的入門與 JDK 基礎說明。驗收的重點不是畫面上有沒有安裝檔,而是編譯器、執行器和 IDE 是否使用同一套環境。
如果你是在學校電腦上學習,常見缺點是沒有管理員權限、設定會被還原,或每次登入都要重新處理環境;如果你使用既有 Mac,長期累積的 JDK 與 Shell 設定也可能互相衝突。這些情況下,先用一台獲得授權的獨立真實 Mac 跑通最小專案,通常比繼續猜測哪個設定檔出錯更省時間。你可以先查看 CALMVPS 的遠端 Mac 連線與學習環境,再依照 CALMVPS 的方案資訊 評估短期使用是否適合。
若你的需求是長期、固定且高負載地執行 Java 專案,自購 Mac 或整理現有設備可能更合理;若需要實體 USB、特殊周邊或校內網路才能完成作業,遠端環境也不一定合適。反過來,當問題主要來自學校權限、舊設定衝突,或你只想先完成課程與測試,租用 CALMVPS 的遠端 Mac 往往能讓你直接從乾淨、可驗收的環境開始,而不用先處理一台受限電腦的歷史包袱。