0
Help us understand the problem. What are the problem?

posted at

updated at

複数の JAVA_HOME と PATH 環境変数の設定切り替えと確認

対象者: Windows Java 開発者
(WSL、Docker などの仮想環境除く)

JAVA_HOME の設定が不要な人

最近は複数バージョンの Java を使用して開発する機会が多くなってきましたが、Pleiades All in One Java の Java Full Edition には、主要な LTS バージョンの Java が付属設定済みのため、JDK のダウンロードやインストールおよび設定が不要で、

Eclipse 上で使用する場合は JAVA_HOME や PATH 環境変数の設定も不要です。

プロジェクト設定や実行構成で Java のバージョンを選択しておくだけで、Eclipse の実行メニューから Java メインクラスや Maven コマンドを実行したり、Gradle タスク・ビューから実行できます。

  • Eclipse が使用する Java のバージョン

    • Eclipse 起動 VM は eclipse.ini の -vm 指定や直下の jre ディレクトリ。
    • Eclipse 上での Gradle や Maven、Java メイン、JUnit などの実行は、Eclipse 上の実行構成の指定。
  • Eclipse のメニューからコマンドプロンプトを起動する場合の注意
     
    Eclipse パッケージ・エクスプローラー右クリック(以下のいずれか)
    方法1: コマンド・プロンプト (Windows のコマンドプロンプトが開く)
    方法2: 表示 → ターミナル (Eclipse のビュー上で開く)
    方法3: ローカル・ターミナルに表示 → ターミナル (同上)

    • 一時的に PATH 先頭に Eclipse 起動 VM の bin が追加される(JAVA_HOME 無視)。
    • JAVA_HOME は Eclipse 起動時の JAVA_HOME(Eclipse 設定は使用されない)。
       
      👆 たとえば、PATH が Java 17 なのに、JAVA_HOME が 11 とかになり、java -version で確認すると 17 になる気持ち悪い状態になったりするという意味です。Eclipse 起動 VM 以外の Java バージョンでコマンドプロンプトを使用したい場合は、次項に従って JAVA_HOME を設定し、Eclipse からではなく Windows エクスプローラーのアドレスバーに cmd と入力するなどしてコマンドプロンプトを起動してください。

JAVA_HOME の設定が必要な人

コマンドプロンプトから Gradle や Maven などのコマンドを実行する場合、JAVA_HOME と PATH 環境変数の設定が必要です。

ただ、頻繁に切り替える場合、GUI の環境変数設定ダイアログからの変更が面倒だったり、コマンド使うにしても setx を使ってはいけない理由 があったり、Windows 再起動が必要な場合があったり、色々考慮が必要だったします。なので、Pleiades All in One 付属の JDK を簡単確実に JAVA_HOME と PATH を設定できるように、2022-06 からは下記のバッチファイルが付属しています(Mac 用はコマンドで JAVA_HOME を単純にセットするだけなので用意していません)。

Pleiades All in One の java ディレクトリ

使い方

  • set-JAVA_HOME-{n}.cmd をダブルクリック。{n} は設定したい Java のバージョン。
  • show-JAVA_HOME.cmd は現在の JAVA_HOME や関連コマンドのバージョンを確認。

例: set-JAVA_HOME-11.cmd 実行結果
Java 17 から 11 に切り替えたときの表示は、こんな感じ。変更前/後の JAVA_HOME、変更後の PATH と java.exe、javac.exe のそれぞれのバージョンを確認表示します。すでに開いているコマンドプロンプトに反映するには、開きなおす必要があります。
JAVA_HOME セットコマンドの実行結果

参考: バッチファイルの処理内容

  • PowerShell で管理者起動 (システム環境変数に設定するため)
  • setx コマンドで JAVA_HOME システム環境変数設定
  • VBScript で PATH システム環境変数内の % 展開前の値を取得
  • PATH に %JAVA_HOME%\bin が含まれていない場合は先頭に追加
  • Chocolatey の RefreshEnv でレジストリに即時反映
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?