VSCode での Java バージョン切り替え
VSCode では Java Extension Pack JDK Auto という複数の Java バージョンを自動設定する拡張機能を提供しています。この拡張を導入すると、JDK がインストールされている場合は自動的に検出され、インストールされていない場合は自動ダウンロードされるため、JDK のインストールや JAVA_HOME、PATH 環境変数の設定が不要です。また、コマンドを実行する VSCode 内のターミナルも簡単にバージョン別に起動できます。
以降では、Pleiades All in One での設定方法について記載しています。
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 を単純にセットするだけなので用意していません)。
使い方
- 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 のそれぞれのバージョンを確認表示します。すでに開いているコマンドプロンプトに反映するには、開きなおす必要があります。
参考: バッチファイルの処理内容
- PowerShell で管理者起動 (システム環境変数に設定するため)
- setx コマンドで JAVA_HOME システム環境変数設定
- VBScript で PATH システム環境変数内の % 展開前の値を取得
- PATH に %JAVA_HOME%\bin が含まれていない場合は先頭に追加
- Chocolatey の RefreshEnv でレジストリに即時反映