LoginSignup
38
24

More than 5 years have passed since last update.

【Windows】java -versionの結果が期待値と異なる

Last updated at Posted at 2014-09-24

java -versionの結果が期待値と異なる

まえおき

この記事 【未解決】Eclipse 4.4 でAndroidプロジェクトのビルドエラー で,結局Eclipseを再インストールしようと思ったわけですが,新しくダウンロードしたEclipseを起動しようとすると

EclipseStartFailed.png

Version 1.6.0_45 of the JVM is not suitable for this product. Version: 1.7 or greater is required.

と表示されて起動できませんでした.
この意味はそのまま起動には1.7以上のJavaが必要だと言われてるわけですが…

環境変数にはJava1.8が指定されている

もともと1.6なんて指定してたっけかなぁと思って環境変数を覗いていましたが,JAVA_HOMEもPathもJava 1.8が指定されていました.

Javaのインストール先はどちらも C:\Program Files\Java\jdk1.*

java -versionの結果

しかし, java -version の結果は無情にも

java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

ぐぬぬ...

javaの場所を探る

なんということでしょう!Windowsにはwhichコマンドがありません.omg.

仕方ないので,こちらの記事を参考に witch コマンドを作ります.
whichコマンドを作る:@IT

which.bat
@echo off
for %%I in (%1 %1.com %1.exe %1.bat %1.cmd %1.vbs %1.js %1.wsf) do if exist %%~$path:I echo %%~$path:I

witch java の実行

C:\Users\user>which java
C:\Windows\System32\java.exe

!?

なんか全然想像していなかったパスが表示されました.

これに関する記事を見つけました

java.exe の実行パスに環境変数 PATH の設定が反映されない(Windows)

java.exe は C:\Windows\System32 にもインストールされる。

おぅ…

したがって、下のように PATH の設定で %SystemRoot%\system32
%JAVA_HOME%\bin よりも先に位置している場合、優先されるのは前者であるから、%SystemRoot%\system32\java.exe が実行される。

なるほどね.

つまり,Java実行ファイルまでのパスを通す際に, C:\Windows\system32; よりも前に C:\Program Files\Java\jdk1.8.0_05\bin; を記述しないといけないわけです.

結果

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

何という罠

38
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
24