16
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2022-05-05

はじめに

最近は複数バージョンの Java を使用して開発する機会が多くなってきました。本稿では簡単に Java のバージョンを切り替える方法をご紹介します。

対象環境

  • Windows, Mac, Linux - VSCode
  • Windows - Pleiades All in One

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

Visual Studio Code の拡張機能 Java Extension Pack Auto Config をインストールすると、複数の LTS JDK、gradle、maven がすぐに使用できます。インストールや JAVA_HOME、PATH などの環境変数設定が不要で、常に最新の状態で利用できます。asdf, Chocolatey, jabba, jEnv, Homebrew, IntelliJ, Pleiades, Scoop, SDKMAN, vfox などにより、すでに JDK がインストールされている場合は自動検出されます。

ターミナルでのコマンド実行

VSCode のエディター機能を使用しない場合でも、単純に任意の Java バージョンで javac、gradle、mvn コマンドを実行できる Windows、macOS、Linux マルチプラットフォームなターミナルとして、設定無しで使用できます。以下のターミナルメニューから Java バージョンを選択して、複数のターミナルを開くことができます。

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

VSCode ユーザー設定全体

VSCode 上のビルドや実行などで使用される VSCode ユーザー設定全体 (settings.json) のデフォルト Java バージョンを切り替えるには、以下のいずれかから、Java バージョンを選択し「再読み込みして適用」ボタンを押します。

  • ターミナルメニュー ≫ 既定のプロファイルの選択
  • コマンド (Ctrl + Shift + P) ≫ Select Default Profile

「キャンセル」するとターミナルのデフォルトには設定されますが、settings.json には反映されません。「既定のプロファイルの選択」は VSCode 標準の機能ですが、settings.json への一括反映は拡張機能によるものです。なお、Java バージョン設定はプロジェクト別にオーバーライドできます。Specify Project Java Version を参照してください。

Pleiads All in One 付属バッチで切り替え

JAVA_HOME の設定が不要な人

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

16
13
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
16
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?