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 サムが正常なインストールのものと一致することも確認しました。

答え1

に移動しますcd /Library/Java/JavaVirtualMachines。 を使用してすべてのファイルを一覧表示しますls

jdk1.8.0_101.jdk2 つのフォルダーとがあるはずですjdk1.8.0_20.jdk。 と入力しますsudo rm -rf jdk1.8.0_20.jdk

ここで、java -version と javac -version が同じであることを確認します。

関連情報