事象 : コマンド・プロンプトでJavaのバージョン確認をしようとしたら怒られた
- 環境
- Windows7 64bit
- Windows10 64bit のパソコンではJAVA_HOMEで切り替えられました
- JAVA_HOME : 1.7を指定
- インストールしているJRE : 1.6 / 1.7 / 1.8(Eclipse 4.6 Neon 起動用)
- 使っているEclipse : 4.3 Kepler / 4.6 Neon
- Javaのバージョンを切り替えた
- コマンド・プロンプトでJavaのバージョン確認
- エラー
> java -version
Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion' has value '1.8', but '1.7' is required.
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.
原因
私的な理由
Eclipse 4.6 Neon を使うにはJRE1.8が必要だったから。
A Java 8 JRE/JDK is required to run all Neon packages based on Eclipse 4.6. The reasoning behind requiring Java 8 are discussed here.
Eclipse/Installation - Eclipsepedia
ちゃんとした理由
以下のサイトで丁寧に説明しています。
Java SE 8以降のパブリックJREで、環境変数PATHの設定を自分で行なわない(行なえない)レベルのユーザーへの対策が変わったため
WindowsでJDK 7とJDK 8を切り替える際の注意点 - Daregada (だれがだ)
対応方法
- 前提
- システム環境変数JAVA_HOMEに変更したいJREが指定されていること
- システム環境変数PATHの[%JAVA_HOME%\bin]が含まれていること
- システム環境変数PATHの[%JAVA_HOME%\bin]より後ろに[C:\ProgramData\Oracle\Java\javapath]を移動する
- Windows 環境変数 Path の設定方法
- 念のためパソコンを再起動しておくとよいです
- [C:\Windows\System32]直下の「java.exe」「javaw.exe」「javaws.exe」を削除する
- 管理者権限が必要
- レジストリにあるJREの値をJAVA_HOMEのバージョンに書き換える
- 変更対象 :
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
-
書き換えるバージョンはマイナーバージョンまで指定しない
- 「1.7.0_79」にしたらエラーメッセージの
value '1.8',
の部分がvalue '1.7.0_79',
になった - 例 : エラーメッセージが以下の場合
-
Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion' has value '1.8', but '1.7' is required.
- 変更前のJRE : 1.8
- 変更後のJRE : 1.7
- 「1.7.0_79」にしたらエラーメッセージの
- レジストリエディターの開き方&使い方 【Windows 7 10 8 Vista XP】 - Let's Emu!
- 変更対象 :