【Java】java(javac)コマンドを実行できるようにする方法

Java

エラー「’java’ は、… として認識されていません。」

javajavac コマンドを実行した時に、以下のようなエラーが出力されることがあります。

$ java
'java' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

$ javac
'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

これは環境変数 PATH の設定が不足していることが原因です。そのため、”PATHを通す” ことによって解消できます。

PATHを通す方法はこちらでも整理しています。

環境変数 PATH にパスを追加して、PATHを通すことさえ出来れば、この問題は解消します。従って必要な情報としては上記ページで事足りるはずです。このページでは、もう少し javajavac に焦点を当てて、具体的な手順を記載していきます。

Java(JDK)のダウンロード

まず初めに、こちらの前提に立つと、設定以前にそもそも java.exejavac.exe のようなファイルが、PCのどこにも保存されていなければ、当然 java コマンドを実行することは出来ないということが分かります。

そこでまずは、実行ファイルをダウンロードしてくるところから始めます。(ここではJDK23を例に進めていきます。)

以下ページから、JDK23のzipファイルをダウンロードします。
Java Downloads > JDK23 > Windows > x64 Compressed Archive

最新版のダウンロードページ更新(またはリンク切れ等)により、jdk-23_windows-x64_bin.zip のダウンロードリンクにたどり着けない場合や、異なるバージョンのJDKをダウンロードしたい場合は、以下いずれかの手順で任意のJDKの .zip をダウンロードすることが可能です。

Java17, 11, 8 を使用したい場合

Java downloads から Java SE subscribers have more choices までスクロール。
② Java17(または Java11, Java8)タブ、Windows タブへ順に切り替え。
③「x64 Compressed Archive」の行から .zip のリンクを押下。

Java23を含むその他のバージョンを利用したい場合

Java archive タブに切り替え、Previous Java releases > Java SE downloads 欄から、任意のバージョンのリンクを押下。

②「Windows x64 Compressed Archive」の行を探して、.zip のリンクを押下。

同じ並びに「x64 Installer(jdk-23_windows-x64_bin.exe)」も用意されており、こちらを使えばこの後の手順も簡略化できますが、理解を深めながら進めるため、ここでは .zip の方をダウンロードして実施していきます。

ダウンロードした .zip を展開すると、bin ディレクトリに java.exejavac.exe が格納されていることを確認できます。

java(javac)コマンドの実行

まずはPATHを通さず、このディレクトリでそれぞれ javajavac コマンドを実行できるか確認します。bin ディレクトリでコマンドプロンプトを開き、javajavac を実行できること、ディレクトリを移動すると実行できなくなること、をそれぞれ確認します。

任意のディレクトリでコマンドプロンプトを開く方法はこちらを参考にしてください。
# カレントディレクトリ「bin」に java.exe と javac.exe があることを確認
$ dir

 C:\Users\xxx\workspace\jdk-23_windows-x64_bin\jdk-23.0.1\bin のディレクトリ

・・・略・・・
YYYY/MM/DD  hh:mm            54,384 java.exe
YYYY/MM/DD  hh:mm            23,664 javac.exe
・・・略・・・

# javaコマンドが実行できることを確認
$ java --version
java 23.0.1 2024-10-15
Java(TM) SE Runtime Environment (build 23.0.1+11-39)
Java HotSpot(TM) 64-Bit Server VM (build 23.0.1+11-39, mixed mode, sharing)

# javacコマンドが実行できることを確認
$ javac --version
javac 23.0.1

# 一つ上の(=java.exeとjavac.exeがない)ディレクトリへ移動
$ cd ..

# javaコマンドが実行できないことを確認
$ java --version
'java' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

# javacコマンドが実行できないことを確認
$ javac --version
'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

拡張子 .exe を省略できるのは、環境変数 PATHEXT.EXE が含まれるためです。

環境変数 PATHEXT の詳細はこちらに記載しています。

これで必要な実行ファイルの準備ができていることを確認できました。あとは他のディレクトリへ移動しても実行できるように、PATHを通す必要があります。

binディレクトリにPATHを通す

java.exejavac.exe のある bin ディレクトリを環境変数PATH に追加したいので、以下のように set コマンドを実行します。(実行する際カレントディレクトリがどこかは問いません。)

# 既存の PATH を確認
$ echo %PATH%
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem

# bin ディレクトリを追加
$ set PATH=%PATH%;C:\Users\xxx\workspace\jdk-23_windows-x64_bin\jdk-23.0.1\bin

# 正しく追加されていることを確認
$ echo %PATH%
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Users\xxx\workspace\jdk-23_windows-x64_bin\jdk-23.0.1\bin
環境変数の追加についてはこちらも参考にしてください。

エラー解消後の動作確認

これで javajavac コマンドをそれぞれ実行できるようになりました。

$ java --version
java 23.0.1 2024-10-15
Java(TM) SE Runtime Environment (build 23.0.1+11-39)
Java HotSpot(TM) 64-Bit Server VM (build 23.0.1+11-39, mixed mode, sharing)

$ javac --version
javac 23.0.1

JREを使用した場合(Java10以前)

Java(JDK)のダウンロード の手順で JDK でなく JRE を使用した場合、java コマンドは実行できますが、javac コマンドを実行することはできません。これは、JREに javac.exe が含まれていないためです。(ただし、そもそもJava11以降はJDKのみしか無いため、あまり意識する必要はないかもしれません。)

JDKとJREについてはこちらでも簡単に説明しています。

Eclipseを使用している場合(組み込みJRE)

Eclipseを使用して開発を行っている場合、取り急ぎJavaを実行したいだけであれば、Eclipseの組み込みJREを使用して、JavaのダウンロードやPATHの設定なしに、EclipseからすぐにJavaを実行することが可能です。

Eclipseの組み込みJREを使用して、任意のバージョンのJavaを設定する手順を記載しています。
タイトルとURLをコピーしました