LoginSignup
12
10

JAVA_HOME 環境変数設定と Java 複数バージョン切り替え

Last updated at Posted at 2022-05-05

VSCode での Java バージョン切り替え

Visual Studio Code の拡張機能 Java Extension Pack Auto Config を使用すると、JDK、gradle、maven のインストール不要、JAVA_HOME や PATH 環境変数も不要、ほったらかしで 4 つの LTS が常に最新状態で利用でき、VSCode のターミナルメニューから Java バージョンを選択するだけで、複数のバージョンをターミナルで並行して利用できます。JDK がすでにインストールされている場合は自動検出・構成され、gradle、maven はデフォルトでは最新版が使用されます。単純に Windows、macOS、Linux 上の java、gradle、mvn コマンド実行用ターミナルとしても設定無しですぐに使用できます。

VSCodeターミナルでのJavaバージョン切り替え

Windows の JAVA_HOME 環境変数切り替え

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 でレジストリに即時反映
12
10
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
12
10