tackeのブログ

I'm a software engineer.

"java -version"と"javac -version"のバージョンが合わない件

x201sでjavaとjavacのバージョンが合わないなー、なんて思ってたけど特に問題ないから放置してたけど、気が向いたので対処してみた。

対処前は以下のような感じ。(JDKの最新版(Java SE 6 update26のx64版)をインストールした直後)

C:\Windows\System32>java -version
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)

C:\Windows\System32>javac -version
javac 1.6.0_26

JDKをインストールする際にJREも同時にインストールされているはずだし、
環境変数にはJAVA_HOME、Pathどちらも正しく設定しているしなんでだろうなーと。

とりあえず入ってるJavaを確認してみると、"C:\Program Files (x86)\Java"に32bitのJavaが入ってる模様。
いれた覚えが無いけど購入時に最初から入ってたのかな?

なんかこの辺が干渉してるっぽいので"プログラムの追加と削除"から古いバージョンのJDKJREを削除することに。
(なんか一番古いやつだと発行元がSun Microsystemsになってるし!)
*1


古いJREJDKの削除後にコマンドプロンプトでバージョンを取ると以下のとおり。バッチリ解決いたしました。

C:\Windows\System32>java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

C:\Windows\System32>javac -version
javac 1.6.0_26

購入当初から入ってるJavaへのパスがWindowsレジストリに書きこまれていて、環境変数よりも優先されていたとかそんな感じなのかな?
よくわかんないので詳しい人教えてください。

教訓:環境はキレイに保つべし!!!

*1:余談だけど、プログラムの追加と削除の一覧から「Java(TM) 6 Update 21」をアンインストールしたんだけど、立ち上がったアンインストールウィンドウでは「Java(TM) 6 Update 17」と表示されたりしてて、だいぶ怪しげな感じだった、、、。