Javaの開発環境で環境変数を設定する方法

はじめに
JavaはWebサービスやスマートフォンアプリ、ゲーム、金融システム、組み込み系システムと幅広い分野で利用されているプログラミング言語の一つです。また1990年代に登場してからバージョンアップや多くのライブラリ・フレームワークが追加され、2022年現在でもPHPやJavaScriptと並んで人気の言語となっています。
言語で開発を進める多くの場合には、自分のパソコンやサーバーに開発環境を構築する必要があります。今回はJavaの実行・開発環境を構築する際に必須となり、かつつまづきやすいポイントとなる環境変数の設定について詳しく解説していきます。
環境変数とは?何のために設定するのか?
Javaの環境変数を設定するタイミングは開発環境を構築する際となるため、初めてJavaに触れた時には恐らく、訳もわからず言われるがままに普段開かないような画面から暗号のような情報を設定し、その後も深い意味はわからず利用しているという方もいるのではないでしょうか。ぜひ今回の記事を機に環境変数を正しく理解して、利用環境が変わっても動じることなく簡単に設定ができるようにしておきましょう。
環境変数とは、特定のデータに簡単にアクセスできるようにあらかじめ設定しておく値のことです。例を挙げて具体的に説明すると、例えばAさんの家を尋ねようとした場合、初めてであればまずどこにあるのかを確認し、地図アプリ等を見ながらようやくたどり着くことができます。しかし2回目以降は忘れてしまわない限り、毎回住所を確認するところから始める必要がなくなります。この住所を確認する手間を省いて住所を記憶し続けていくことが、環境変数の設定に当たります。
Javaにおいては一般的に2つの環境変数を設定します。一つは「JAVA_HOME」で、こちらはJavaを必要とするソフトやアプリケーションが、コンピュータ内にあるJavaを参照可能とするための変数です。2つ目は「PATH」で、こちらはJavaに限らず様々なプログラムのある場所を示した情報が複数格納されている変数です。Javaでのコンパイルや実行に必要となるデータのある場所を設定します。
環境変数の設定方法
今回はWindows、MacそれぞれのOSでの環境変数の設定方法を紹介します。なおWindowsはバージョンによってメニュー名が変わることが多いため、2022年時点で主流となっているWindows10に合わせて解説していきます。
Windows10での設定
Windowsではコントロールパネル内のシステムプロパティから設定を行います。はじめにデスクトップ内の「Windowsマーク(スタートメニュー)」、「Windowsシステムツール」の順にクリックします。コントロールパネル内にある「システムとセキュリティ」をクリックし、さらに「システム」をクリックするとコンピュータのスペック等が表示される画面になります。
左側メニューの「システムの詳細設定」をクリックすると「システムのプロパティ」が表示されるので、「詳細設定」タブを選択します。さらに一番下にある「環境変数」ボタンをクリックすると環境変数を設定する画面が開きます。
なお画面内には「ユーザー環境変数」「システム環境変数」の2つが上下に表示されることでしょう。ユーザー環境変数の変更を行うと現在ログイン中のユーザーにのみ設定が反映され、システム環境変数の変更を行うとWindowsに存在しているユーザー全体に設定が反映されます。また通常はユーザー側に設定した内容が優先して適用されますが、今回設定することになる「PATH」という環境変数は、ユーザー環境変数、システム環境変数で異なる設定がされている場合、両方の内容が自動的に組み合わさることになります。組み合わさった場合は「システム環境変数;ユーザー環境変数」の順となり、先に記述されている内容が優先されるため、結果としてシステム環境変数の方が適用されることとなります。今回はシステム環境変数への設定として紹介していきますが、基本的な手順は変わりません。
環境変数を追加するには、環境変数設定画面の「新規」をクリックします。変数名、変数値の入力画面が表示されるので、変数名には1つ目の変数「JAVA_HOME」を入力します。もし既に「JAVA_HOME 」が存在している場合は、「JAVA_HOME」を選んだ状態で「編集」ボタンをクリックすると同じ画面が開きます。変数値には、自身でJavaの開発に必要なJDKをインストールしたディレクトリまでのパスを指定してください。例えばCドライブ内の「test」フォルダ内にインストールした場合は、「C:¥test¥java¥jdk-(バージョン)」というようになります。両方入力し終えたら「OK」をクリックして完了です。設定はプロパティ画面を閉じないと反映されないため、システム環境変数内に「JAVA_HOME」が表示されていることを確認したら一度画面を閉じてください。
ここで「コマンドプロンプト」を使って正しく設定されていることを確認してみます。コマンドプロンプトは、Windowsのスタートメニューから「コマンドプロンプト」を探して起動するか、キーボードの[Windows]と[R]キーを同時に押すと「ファイル名を指定して実行」と表示されるため、そこに「cmd」と入力して「OK」をクリックすることでも起動が可能です。
コマンドプロンプトが起動したら「set JAVA_HOME」と入力し、Enterを押します。「JAVA_HOME=C:¥test¥java¥jdk-(バージョン)」と設定内容が表示されたら正常に設定が反映していることとなります。
続いて「PATH」の設定をしていくので、同じ手順で環境変数設定画面を開きます。PATHは既に存在している変数なので、新規や上書きを行うのではなく、現在の設定にJavaの設定を追加することとなります。上書きしてしまうと初期状態でWindowsに設定されていたパスが全て消えてしまうので注意が必要です。
システム環境変数の中から「Path」を探し出したらクリックして「編集」をクリックします。既に設定済みのパスが一覧で表示されますので、ここでは右側の「新規」をクリックします。Javaのコンパイルや実行に必要はデータは「bin」内に含まれているため「%JAVA_HOME%\bin」と入力します。勘のいい方は既に気づいているかもしれませんが、「%JAVA_HOME%」の部分は先ほど設定した「C:¥test¥java¥jdk-(バージョン)」と同義になります。既にJAVA_HOMEを設定しているためこういった書き方ができるということです。入力し終えたら「OK」をクリックして完了です。
同じくコマンドプロンプトから確認していきます。プロパティ画面を閉じてからコマンドプロンプトを開きましょう。「javac -version」と入力してEnterを押し、「javac (バージョン)」と表示されたら正常に設定が行えていることになります。「'javac' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」とエラーが表示される場合は、指定したパスが存在しない等の誤りがあると思われるため、環境変数設定画面で見直し、適宜修正しましょう。以上がWindows上での設定です。
Macでの設定
Macではターミナルを使ってコマンド画面で環境変数を設定することとなります。ターミナルを利用したことがなくどこにあるかわからない場合は、Finder等で「ターミナル」と入力して検索してみましょう。ターミナルが見つかったら起動します。またWindowsの時と同様にJDKをインストールした場所をあらかじめ確認しておきましょう。
ターミナルではコマンド操作が必要です。Macではいずれの変数も既存の設定に追加していくことになるので、初めに現在のパス状態を確認しておきます。「echo $PATH」と入力してEnterを押すと現在設定されている状態が確認できます。
それではPATHの方から追加してきますが、パスを追加する際は「export」というコマンドを使って「export PATH=$PATH:(JDKをインストールしたディレクトリまでのパス)」と入力します。これを実行することで、先ほど「echo $PATH」で確認したパスにJavaの設定が追加されます。
次に「JAVA_HOME」の設定ですが、こちらは新たに設定する変数であるため「PATH」は不要で、「export JAVA_HOME=(JDKをインストールしたディレクトリまでのパス)」と入力して実行します。なおパスの設定後はそれぞれ「echo $PATH」「echo $JAVA_HOME」で設定状況を確認しましょう。
環境変数に関する直接の設定は以上となりますが、これだけでは変更した内容がターミナルを閉じるとリセットされてしまうため、変更を維持させるために別途処理が必要となります。Macの各種設定は「~/.bash_profile」に書き込まれるため、このファイルに変更内容を維持してもらうように「source」コマンドを実行します。具体的なコマンドは「source ~/.bash_profile」となります。このコマンドを実行したらMacでの設定は完了となります。
まとめ
環境変数の設定は、Javaを始める際の基本的な内容にもかかわらず、普段パソコンを利用しているだけではあまり意識しない仕組みであるため、理解しづらい部分があったり、スムーズに設定が完了できなかったりということが発生しやすい部分でもあります。なお今回はWindowsとMacでの設定方法に絞って紹介しましたが、もちろんCentOS等のLinux系OSでも環境変数の設定は可能です。ぜひ設定方法を忘れてしまった場合はこちらの記事を参考に、それぞれの環境に見合った環境変数を設定してみてください。