はじめに
- Chocolatey で jdk8、jdk9 の順にインストールした。
- さらに、インストーラで jdk7 をインストールした。
この状態ですと、有効な java バージョン、javac バージョンや JAVA_HOME は何なのか、わけがわからなくなってきますので、整理しました。
環境
- Windows 10 Pro 64 bit
調べる方法
java -version javac -version where java where javac echo %Path% echo %JAVA_HOME%
整理前の状態
- JRE (java) は 1.7 だが、ファイルの場所は
C:\Program Files\Java\jdk1.7.0_80
やC:\Program Files\Java\jre7
ではない。C:\Windows\System32\java.exe
が JRE 1.7 の場所のようだ。 - JDK (javac) は 1.8
- JAVA_HOME は 1.9
- Path の通っているのは、
C:\Program Files\Java\jdk1.8.0_144\bin;
、C:\Program Files\Java\jdk1.8.0_152\bin;
、C:\Program Files\Java\jdk-9.0.1\bin;
。jdk1.8.0_144 はいぜんアンインストールしたものが残っているようだ。 - JRE のバージョン、JDK のバージョン、JAVA_HOME のパス、すべて異なる。混乱の元となりそう。
C:\Users\oki2a24>java -version java version "1.7.0_80" Java(TM) SE Runtime Environment (build 1.7.0_80-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode) C:\Users\oki2a24> C:\Users\oki2a24>javac -version javac 1.8.0_152 C:\Users\oki2a24> C:\Users\oki2a24>where java C:\Windows\System32\java.exe C:\Program Files\Java\jdk1.8.0_152\bin\java.exe C:\Program Files\Java\jdk-9.0.1\bin\java.exe C:\Users\oki2a24> C:\Users\oki2a24>where javac C:\Program Files\Java\jdk1.8.0_152\bin\javac.exe C:\Program Files\Java\jdk-9.0.1\bin\javac.exe C:\Users\oki2a24> C:\Users\oki2a24>echo %Path% C:\Python36\Scripts\;C:\Python36\;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\;C:\Program Files\WinMerge;C:\Program Files\dotnet\;C:\ProgramData\chocolatey\bin;C:\Program Files\Java\jdk1.8.0_144\bin;C:\tools\grails-3.3.0\bin;C:\Program Files\Git\cmd;C:\tools\grails-3.3.1\bin;C:\Program Files\Java\jdk1.8.0_152\bin;C:\HashiCorp\Vagrant\bin;C:\tools\grails-3.3.2\bin;C:\Program Files\Java\jdk-9.0.1\bin;C:\Users\oki2a24\AppData\Local\Microsoft\WindowsApps;C:\Users\oki2a24\AppData\Local\git-foresta;C:\Users\oki2a24\AppData\Local\atom\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\Oracle\VirtualBox;;C:\Users\oki2a24\AppData\Local\Microsoft\WindowsApps C:\Users\oki2a24> C:\Users\oki2a24>echo %JAVA_HOME% C:\Program Files\Java\jdk-9.0.1 C:\Users\oki2a24>
整理の方針
あえて Java 7 を使いたいのです。ですので次のようにします。
java -version
-> 1.7javac -version
-> 1.7- JAVA_HOME -> 1.7
変更 1. 環境変数
コントロール パネル\すべてのコントロール パネル項目\システム
- システムの詳細設定
- 環境変数
システム環境変数について、次のように修正しました。
- JAVA_HOME:
C:\Program Files\Java\jdk1.7.0_80
- Path:
C:\Program Files\Java\jdk1.8.0_144\bin
は存在しないため削除する。C:\Program Files\Java\jdk1.8.0_152\bin
は削除する。C:\Program Files\Java\jdk-9.0.1\bin
は削除する。C:\Program Files\Java\jdk1.7.0_80\bin
を追加する。
変更 2. JRE の削除
今回最初に調べたときの where java
結果の C:\Windows\System32\java.exe
は JRE 7 です。
放置しておいても目的にはかなっているため、問題はありません。
しかし、別の JRE に変更したいときに Path の変更だけでは切り替えられないようになってしまっています。
そこで、JRE 単体では使用しませんし、JDK には JRE も含まれていますので、JRE をアンインストールしました。
- スタートメニュー > 設定 > アプリと機能
- Java 7 Update 80 (64-bit) をアンインストール
整理した結果
- JRE のバージョン、JDK のバージョン、JAVA_HOME のパス、すべて同じとなった。
C:\Users\oki2a24>java -version java version "1.7.0_80" Java(TM) SE Runtime Environment (build 1.7.0_80-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode) C:\Users\oki2a24>javac -version javac 1.7.0_80 C:\Users\oki2a24>where java C:\Program Files\Java\jdk1.7.0_80\bin\java.exe C:\Users\oki2a24>where javac C:\Program Files\Java\jdk1.7.0_80\bin\javac.exe C:\Users\oki2a24>echo %Path% C:\Python36\Scripts\;C:\Python36\;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\;C:\Program Files\WinMerge;C:\Program Files\dotnet\;C:\ProgramData\chocolatey\bin;C:\tools\grails-3.3.0\bin;C:\Program Files\Git\cmd;C:\tools\grails-3.3.1\bin;C:\HashiCorp\Vagrant\bin;C:\tools\grails-3.3.2\bin;C:\Program Files\Java\jdk1.7.0_80\bin;C:\Users\oki2a24\AppData\Local\Microsoft\WindowsApps;C:\Users\oki2a24\AppData\Local\git-foresta;C:\Users\oki2a24\AppData\Local\atom\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\Oracle\VirtualBox;;C:\Users\oki2a24\AppData\Local\Microsoft\WindowsApps C:\Users\oki2a24>echo %JAVA_HOME% C:\Program Files\Java\jdk1.7.0_80 C:\Users\oki2a24>
おわりに
今回の件は、Visual Studio Code で Java 7 の開発を Java の拡張機能 Language Support for Java(TM) by Red Hat – Visual Studio Marketplace を使いながら行いたい、というときにどうすればよいかわからなくなりました><。
調べてみて、スッキリしました!
以上です。
「【Windows】複数の jdk をインストールしたので java.exe と javac.exe を整理する」への2件の返信
書籍を購入するたびにバージョンが上がっていて、複数バージョンを(結果的に)インストールしている初心者・独学者は、実は意外に多いのではないかと想像しています。そういった方たちはコマンドプロンプト画面のちょっとしたエラーを気にするため、とても有益な情報だと思います。
コメントありがとう存じます。大変嬉しく思います。