カテゴリー
コンピューター

【Windows】複数の jdk をインストールしたので java.exe と javac.exe を整理する

はじめに

  • 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_80C:\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.7
  • javac -version -> 1.7
  • JAVA_HOME -> 1.7

変更 1. 環境変数

  1. コントロール パネル\すべてのコントロール パネル項目\システム
  2. システムの詳細設定
  3. 環境変数

システム環境変数について、次のように修正しました。

  • 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 をアンインストールしました。

  1. スタートメニュー > 設定 > アプリと機能
  2. 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件の返信

書籍を購入するたびにバージョンが上がっていて、複数バージョンを(結果的に)インストールしている初心者・独学者は、実は意外に多いのではないかと想像しています。そういった方たちはコマンドプロンプト画面のちょっとしたエラーを気にするため、とても有益な情報だと思います。

コメントを残す