OSX 上的 JDK 版本不匹配

OSX 上的 JDK 版本不匹配

我一直在 OSX 上使用 Java 進行開發,沒有遇到幾個問題。昨天,我開始遇到奇怪的編譯器崩潰(NPE 深入 javac)。

我安裝了 JDK 1.8.0_101,但 javac 將自身報告為 1.8.0_20。

$ which javac
/usr/bin/javac

$ ls -l /usr/bin/javac
lrwxr-xr-x  1 root  wheel  74 20 Sep 15:16 /usr/bin/javac -> /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/bin/javac

$ /usr/libexec/java_home 1.8
/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home

$ echo $JAVA_HOME
Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home

$ java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

所以一切看起來都很棒,但:

$ javac -version
javac 1.8.0_20

有人對可能導致它選擇錯誤版本的原因有任何建議嗎?我嘗試過刪除所有 JVM,然後重新安裝、重新啟動等等。

編輯

即使從符號連結的目標運行 javac 也會報告錯誤的版本。我還確認 /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/bin/javac 的 md5 總和與正常安裝的 md5 總和相符。

答案1

cd /Library/Java/JavaVirtualMachines。列出所有使用ls.

應該有兩個資料夾jdk1.8.0_101.jdkjdk1.8.0_20.jdk。進入sudo rm -rf jdk1.8.0_20.jdk

現在檢查 java -version 和 javac -version ,應該是相同的。

相關內容