OSX 上的 JDK 版本不匹配

OSX 上的 JDK 版本不匹配

我一直在 OSX 上使用 Java 进行开发,但遇到了一些问题。昨天,我开始遇到奇怪的编译器崩溃(javac 深处的 NPE)。

我安装了 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 应该相同。

相关内容