Java プログラムをコンパイルしようとしたときにエラーが発生します。
私は Windows を使用しています (これは Windows 固有の問題です)。最新の JDK がインストールされています。
変数に関する解決策を試みましたがPATH
、エラーは解決されません。
コンソール出力:
C:\>set path=C:Program Files (x86)\Java\jdk1.7.0\bin
C:\>javac Hello.java
'javac' is not recognized as an internal or external command,
operable program or batch file.
ベストアンサー1
要約
経験豊富な読者向け:
- Java パスを見つけます。次のようになります。
C:\Program Files\Java\jdkxxxx\bin\
- スタート メニューで「環境変数」を検索してオプション ダイアログを開きます。
- 調べます
PATH
。古い Java パスを削除します。 - 新しい Java パスを に追加します
PATH
。 - 編集
JAVA_HOME
。 - コンソール/IDE を閉じて再度開きます。
いらっしゃいませ!
Java 初心者が直面する最も悪名高い技術的問題の 1 つであるエラー メッセージに遭遇しました'xyz' is not recognized as an internal or external command...
。
簡単に言えば、Java が正しくインストールされていません。Windows に Java をインストールするには、いくつかの手動の手順が必要です。JDK のアップグレード後も含め、Java をインストールした後は必ずこれらの手順を実行する必要があります。
環境変数とPATH
(すでに理解している場合は、次の 3 つのセクションをスキップしてください。)
を実行する場合javac HelloWorld.java
、cmd はjavac.exe
がどこにあるかを判断する必要があります。これはPATH
、環境変数 によって実行されます。
アン環境変数は特別なキーと値のペアです (例windir=C:\WINDOWS
)。ほとんどはオペレーティング システムに付属しており、一部はシステムの正常な動作に必要です。それらのリストは、起動時にすべてのプログラム (cmd を含む) に渡されます。Windowsの場合、 がある2種類:ユーザー環境変数とシステム環境変数。
環境変数は次のように確認できます。
C:\>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\craig\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
...
最も重要な変数はPATH
. で区切られたパスのリストです;
。コマンドが cmd に入力されると、リスト内の各ディレクトリがスキャンされ、一致する実行可能ファイルが検索されます。
私のコンピューターでは、次のPATH
ようになります:
C:\>echo %PATH%
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPower
Shell\v1.0\;C:\ProgramData\Microsoft\Windows\Start Menu\Programs;C:\Users\craig\AppData\
Roaming\Microsoft\Windows\Start Menu\Programs;C:\msys64\usr\bin;C:\msys64\mingw64\bin;C:\
msys64\mingw32\bin;C:\Program Files\nodejs\;C:\Program Files (x86)\Yarn\bin\;C:\Users\
craig\AppData\Local\Yarn\bin;C:\Program Files\Java\jdk-10.0.2\bin;C:\ProgramFiles\Git\cmd;
C:\Program Files\Oracle\VirtualBox;C:\Program Files\7-Zip\;C:\Program Files\PuTTY\;C:\
Program Files\launch4j;C:\Program Files (x86)\NSIS\Bin;C:\Program Files (x86)\Common Files
\Adobe\AGL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program
Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\iCLS Client\;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files
(x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\iCLS
Client\;C:\Users\craig\AppData\Local\Microsoft\WindowsApps
javac HelloWorld.java
,cmdを実行すると、それjavac
が内部コマンド、検索PATH
ユーザーが従うシステムPATH
. リスト内の各ディレクトリに自動的に入力し、javac.com
、、、javac.exe
などjavac.bat
。が存在します。見つかった場合はjavac
それを実行します。見つからない場合は、'javac' is not recognized as an internal or external command, operable program or batch file.
Java 実行可能ファイル ディレクトリを に追加する必要がありますPATH
。
JDK と JRE
(すでに理解している場合は、このセクションをスキップしてください。)
Java をダウンロードするときに、次のいずれかの選択肢が提供されます。
- のJavaランタイム環境(JRE) には、Java プログラムを実行するために必要なツールが含まれていますが、新しいプログラムをコンパイルするためのツールは含まれていません。つまり、 は含まれていますが、 は含まれて
java
いません。javac
- のJava開発キット(JDK) には、
java
とjavac
のほか、多数の開発ツールが含まれています。JDK は JRE のスーパーセットです。
JDK がインストールされていることを確認してください。JRE のみをインストールしている場合は、ハード ドライブに Java コンパイラがインストールされていないため実行できませんjavac
。Windows プログラム リストを確認し、Java パッケージの名前に「Development Kit」という単語が含まれていることを確認してください。
使用しないでくださいset
(特に予定がない場合は、このセクションをスキップしてください。)
他のいくつかの回答では、次のようなバリエーションを実行することを推奨しています。
C:\>:: DON'T DO THIS
C:\>set PATH=C:\Program Files\Java\jdk1.7.0_09\bin
そうしないでください。そのコマンドにはいくつかの大きな問題があります。
- このコマンドは、Java パスから他のすべてを消去し
PATH
、Java パスに置き換えます。このコマンドを実行すると、他のさまざまなコマンドが機能しなくなる場合があります。 - Java パスはおそらく違います
C:\Program Files\Java\jdk1.7.0_09\bin
。JDK の新しいバージョンを使用している可能性が高く、パスが異なります。 - 新しいコマンドは現在の cmd セッションにのみ
PATH
適用されますset
。コマンド プロンプトを開くたびにコマンドを再入力する必要があります。
ポイント 1 と 2 は、この少し改善されたバージョンで解決できます。
C:\>:: DON'T DO THIS EITHER
C:\>set PATH=C:\Program Files\Java\<enter the correct Java folder here>\bin;%PATH%
しかし、一般的にそれは悪い考えです。
Javaパスを見つける
正しい方法は、Java がインストールされている場所を見つけることから始まります。これは、Java のインストール方法によって異なります。
EXEインストーラー
セットアップ プログラムを実行して Java をインストールしました。Oracle のインストーラーは、Java のバージョンをC:\Program Files\Java\
(またはC:\Program Files (x86)\Java\
) の下に配置します。ファイル エクスプローラーまたはコマンド プロンプトを使用して、そのディレクトリに移動します。
各サブフォルダは Java のバージョンを表します。 サブフォルダが 1 つしかない場合は、そのバージョンが見つかりました。 それ以外の場合は、新しいバージョンと思われるものを選択してください。 フォルダ名がjdk
(ではなくjre
) で始まっていることを確認してください。 ディレクトリを入力します。
次にbin
そのディレクトリを入力します。
これで正しいディレクトリに移動しました。パスをコピーしてください。ファイルエクスプローラーの場合は、アドレスバーをクリックします。コマンドプロンプトの場合は、コピープロンプト。
結果の Java パスは次の形式になります (引用符なし):
C:\Program Files\Java\jdkxxxx\bin\
ZIPファイル
JDK を含む .zip をダウンロードしました。邪魔にならないランダムな場所に解凍するのがC:\Java\
適切な選択です。
次に、bin
その中のどこかにフォルダを探します。
これで正しいディレクトリに移動しました。そのパスをコピーします。これが Java パスです。
フォルダを移動しないでください。移動するとパスが無効になります。
設定ダイアログを開く
これが編集するダイアログですPATH
。Windows のバージョン、UI 設定、システム構成の混乱具合に応じて、このダイアログにアクセスする方法は多数あります。
以下のいくつかをお試しください:
- スタートメニュー/タスクバーの検索ボックス » 「環境変数」を検索
- Win + R »
control sysdm.cpl,,3
- Win + R »
SystemPropertiesAdvanced.exe
» 環境変数 - ファイルエクスプローラー » アドレスバーに入力
Control Panel\System and Security\System
» 高度なシステム設定(左端、サイドバー) » 環境変数 - デスクトップ » このPCを右クリック » プロパティ » システムの詳細設定 » 環境変数
- スタートメニュー » コンピューターを右クリック » プロパティ » システムの詳細設定 » 環境変数
- コントロール パネル (アイコン モード) » システム » システムの詳細設定 » 環境変数
- コントロール パネル (カテゴリ モード) » システムとセキュリティ » システム » システムの詳細設定 » 環境変数
- デスクトップ » マイコンピュータを右クリック » 詳細設定 » 環境変数
- コントロールパネル » システム » 詳細設定 » 環境変数
これらのいずれかを選択すると、適切な設定ダイアログが表示されます。
Windows 10をお使いの場合、マイクロソフトは派手な新しいUI編集してください。そうしないと、セミコロンで覆われた全文が 1 行のテキスト ボックスに押し込まれてPATH
表示されます。システムを壊さずに必要な編集を行うように最善を尽くしてください。PATH
クリーンPATH
を見てくださいPATH
。ほぼ間違いなく 2 つのPATH
変数があります (ユーザー環境変数とシステム環境変数のため)。両方を確認する必要があります。
他のJavaパスをチェックして削除してください。それらの存在はあらゆる種類の競合を引き起こす可能性があります。(たとえば、JRE 8とJDK 11をPATH
この順序でインストールすると、javac
Java 11コンパイラが呼び出され、バージョン55のファイルが作成されます.class
が、java
バージョン52までしかサポートされていないJava 8 JVMが呼び出され、次のような問題が発生します。サポートされていないバージョンのエラープログラムをコンパイルして実行できなくなる可能性がありPATH
ます。) この問題を回避するには、 にJavaパスが1つだけあることを確認してください。また、古いJavaバージョンをアンインストールする、も。そして、覚えておいてください持つ必要はないJDK と JRE の両方。
がある場合はC:\ProgramData\Oracle\Java\javapath
、それも削除してください。Oracleは、アップグレード後にJavaパスが壊れる問題を解決するために、シンボリックリンク常に最新のJavaインストールを指すようにしていましたが、残念ながら間違った場所を指したり、単に機能していないこのエントリを削除し、Java パスを手動で管理することをお勧めします。
今が、 の一般的なハウスキーピングを実行する良い機会でもありますPATH
。PC にインストールされなくなったソフトウェアに関連するパスがある場合は、それらを削除できます。パスの順序をシャッフルすることもできます (そのようなことを気にする場合)。
に追加PATH
ここで、3 つの手順前に見つけた Java パスを取得し、システムに配置しますPATH
。
新しいパスがリストのどこに置かれるかは問題ではありません。最後に置くのが適切な選択です。
Windows 10 より前の UI を使用している場合は、セミコロンが正しく配置されていることを確認してください。リスト内の各パスを区切るセミコロンは 1 つだけである必要があります。
他に言うべきことはあまりありません。パスを追加してPATH
「OK」をクリックするだけです。
セットJAVA_HOME
ついでに、これも設定しておくといいでしょうJAVA_HOME
。これはJavaパスも含める必要がある別の環境変数です。人気のJavaビルドシステムを含む多くのJavaおよび非Javaプログラムメイヴンそしてグラドル正しく設定されていない場合はエラーが発生します。
が存在しない場合は、新しいシステム環境変数として作成します。ディレクトリJAVA_HOME
なしの Java ディレクトリのパス ( ) に設定します。bin/
C:\Program Files\Java\jdkxxxx\
JAVA_HOME
Java をアップグレードした後も編集することを忘れないでください。
コマンドプロンプトを閉じて再度開きます
を変更したにもかかわらずPATH
、cmd を含む実行中のすべてのプログラムは、古い のみを参照しますPATH
。これは、すべての環境変数のリストがプログラムの実行開始時にのみコピーされ、その後はキャッシュされたコピーのみが参照されるためです。
良い方法はありませんcmdの環境変数を更新するなので、コマンド プロンプトを閉じて再度開いてください。IDE を使用している場合は、これも閉じて再度開いてください。