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


253

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.

7
パスが設定されていないと思います。enviromentvariableに移動し、パスを設定します
Ron

2
この質問は、実際のJDKインストール手順で簡単に見つけることができ、回答が最新であり、ここでのどの回答よりも質が高いため、トピックから外れているようです。また、公式の入門チュートリアルの最初の章で、すべてのプラットフォームですぐに利用できます。
Jason C

8
情報についてはTaジェイソンC.しかし、このスレッドをトピック外と呼ぶ決定は、この回答を支持した他の人の数とは奇妙に思えることを認めます。私がやろうとしているように。
マットスティーブンス


新しい変数を追加する方が簡単です。新しい変数「PATH」を作成したら、セミコロン(;)と値の末尾を必ず追加してください。
Amir Md Amiruzzaman

回答:


434

TL; DR

経験豊富な読者向け:

  1. Javaパスを見つけます。次のようになります。C:\Program Files\Java\jdkxxxx\bin\
  2. スタートメニューで「環境変数」を検索し、オプションダイアログを開きます。
  3. 調べPATHます。古いJavaパスを削除します。
  4. 新しいJavaパスをに追加しPATHます。
  5. 編集JAVA_HOME
  6. コンソール/ 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では、ある二つのタイプユーザー環境変数システム環境変数が

次のような環境変数を確認できます。

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内部コマンドではないことを認識したシステムをPATHPATH検索し、続いてユーザーを検索します。これは、機械的に、リスト内のすべてのディレクトリに入り、そしてかどうかをチェックjavac.comjavac.exejavac.bat、などが存在しています。が見つかるとjavac、それを実行します。そうでない場合は、印刷します'javac' is not recognized as an internal or external command, operable program or batch file.

Java実行可能ディレクトリをに追加する必要がありPATHます。

JDK対JRE

(すでにこれを理解している場合は、このセクションをスキップして構いません。)

Javaをダウンロードする場合、次の選択肢があります。

  • Javaランタイム環境 Javaプログラムを実行するために必要なツールが含まれますが、(JRE)、ない新しいものをコンパイルするには-それは含まれていjavaますがありませんjavac
  • Javaの開発キットの両方が含まれています(JDK)、javaおよびjavac他の開発ツールのホストと一緒に、。JDKはJREのスーパーセットです。

JDKがインストールされていることを確認する必要があります。JREのみをインストールしjavacた場合は、ハードドライブにJavaコンパイラがインストールされていないため、実行できません。Windowsプログラムリストを確認し、Javaパッケージの名前に「開発キット」という単語が含まれていることを確認してください。

使わない set

(とにかく計画を立てていなかった場合は、このセクションをスキップして構いません。)

他のいくつかの答えは、いくつかのバリエーションを実行することをお勧めします:

C:\>:: DON'T DO THIS
C:\>set PATH=C:\Program Files\Java\jdk1.7.0_09\bin

やめてください。このコマンドにはいくつかの大きな問題があります。

  1. このコマンドは、他のすべてのもの消去PATHし、Javaパスに置き換えます。このコマンドを実行した後、他のさまざまなコマンドが機能しない場合があります。
  2. Javaパスはおそらく C:\Program Files\Java\jdk1.7.0_09\bin違います–ほぼ間違いなく新しいバージョンのJDKがあり、異なるパスになるでしょう。
  3. 新しいPATH ものは、現在のcmdセッションにのみ適用されます。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のインストール方法によって異なります。

エグゼインストーラー

セットアッププログラムを実行して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設定、およびシステム構成がどのように混乱しているかに応じて、このダイアログにアクセスする方法は多数あります。

これらのいくつかを試してください:

  • スタートメニュー/タスクバー検索ボックス»「環境変数」を検索
  • 勝利+ R» control sysdm.cpl,,3
  • Win + R» SystemPropertiesAdvanced.exe»環境変数
  • ファイルエクスプローラー»アドレスバーに入力Control Panel\System and Security\System»詳細システム設定(左端、サイドバー)»環境変数
  • デスクトップ»このPCを右クリック»プロパティ»システムの詳細設定»環境変数
  • スタートメニュー»コンピュータを右クリック»プロパティ»システムの詳細設定»環境変数
  • コントロールパネル(アイコンモード)»システム»システムの詳細設定»環境変数
  • コントロールパネル(カテゴリモード)»システムとセキュリティ»システム»詳細システム設定»環境変数
  • デスクトップ»マイコンピュータを右クリック»詳細設定»環境変数
  • コントロールパネル»システム»高度な»環境変数

これらのいずれかを選択すると、正しい設定ダイアログが表示されます。

Windows 10を使用している場合、Microsoftは、編集するための豪華な新しいUIを提供していますPATH。それ以外の場合は、PATHセミコロンがちりばめられた完全な栄光が、1行のテキストボックスに圧迫されて表示されます。システムを壊すことなく、必要な編集を行うために最善を尽くしてください。

掃除 PATH

見てくださいPATH。ほぼ確実に2つのPATH変数があります(ユーザー環境変数とシステム環境変数のため)。あなたはそれらの両方を見る必要があります。

他のJavaパスを確認して削除してください。それらの存在は、あらゆる種類の対立を引き起こす可能性があります。(たとえば、JRE 8とJDK 11がPATHこの順序である場合javac、Java 11コンパイラーが呼び出され、バージョン55の.classファイルが作成されますがjava、Java 8 JVMが呼び出され、バージョン52までしかサポートされません。あなたが経験するサポートされていないバージョンのエラーを任意のプログラムをコンパイルして実行することはできない。)サイドステップ、これらの問題をあなただけで1つのJavaのパスを持っていることを確認することによってPATH。また、その間に、古いJavaバージョンをアンインストールすることもできます。また、JDKとJREの両方を用意する必要はありません

ある場合はC:\ProgramData\Oracle\Java\javapathそれも削除します。Oracle は、最新のJavaインストールを常に指すシンボリックリンクを作成することにより、アップグレード後にJavaパスが壊れる問題を解決することを意図していました。残念ながら、多くの場合、間違った場所を指し示すか、単に機能しなくなります。このエントリを削除し、Javaパスを手動で管理することをお勧めします。

今も一般的なハウスキーピングを実行する良い機会PATHです。PCにインストールされなくなったソフトウェアに関連するパスがある場合は、それらを削除できます。また、パスの順序を入れ替えることもできます(そのようなことに関心がある場合)。

追加 PATH

3ステップ前に見つけたJavaパスを取得して、システムに配置しPATHます。

リストのどこに新しいパスを移動してもかまいません。最後に配置するのが良い選択です。

Windows 10より前のUIを使用している場合は、セミコロンを正しく配置したことを確認してください。リスト内のすべてのパスを正確に区切る必要があります。

ここで言うことは他にあまりありません。にパスを追加してPATH、[OK]をクリックします。

セットする JAVA_HOME

あなたがそれにいる間、あなたも同様に設定することができJAVA_HOMEます。これは、Javaパスも含む必要がある別の環境変数です。一般的なJavaビルドシステムであるMavenおよびGradleを含む多くのJavaおよび非Javaプログラムは、正しく設定されていないとエラーをスローします。

JAVA_HOME存在しない場合は、新しいシステム環境変数として作成してください。なしJavaディレクトリのパスに設定しbin/、すなわち、ディレクトリC:\Program Files\Java\jdkxxxx\

JAVA_HOMEJavaのアップグレード後も必ず編集してください。

コマンドプロンプトを閉じて再度開く

を変更しましたがPATH、cmdを含むすべての実行中のプログラムは古いのみを表示しPATHます。これは、すべての環境変数のリストが、プログラムの実行開始時にのみプログラムにコピーされるためです。その後は、キャッシュされたコピーのみを調べます。

cmdの環境変数更新する適切な方法はないため、コマンドプロンプトを閉じて再度開くだけです。IDEを使用している場合は、IDEも閉じて再度開きます。

こちらもご覧ください


7
これは私にとってはうまくいきましたが、パス文字列の最後に場所を追加しようとする前に。なぜ最初からしか機能しないのですか?
エリックH.

4
ありがとう!これは私のために働きます!@Eric H:最後に追加することが私にとってはうまくいきます。私が理解していることから、それはパスを左から右に通過し、javac.exeを探します。だから、おそらくあなたはそれを前面のいくつかのディレクトリに持っていて、そのjavac.exeは動作しません。
Dao Lam

36
コマンドラインを閉じてから再び開くための+1、それは私にとってうまくいきました!
Sameh Deabes 2014年

コンピューターに異なるバージョンのjdkとjreがある場合、それは理にかなっていますか?
アーロンリュー

これらの変数を設定するなど、OSシステムについて多くのことを学びました。おかげで男
Aniket Jadhav '30 / 07/30

77

これを試してください。私もそれを持っていましたが、今ではXPで解決されました。

C:\ YourFolder >set path=C:\Program Files\Java\jdk1.7.0_09\bin;
C:\ YourFolder >javac YourCode.java

45

setコマンドの入力を間違えた–の後にバックスラッシュを入力しなかったC:。そのはず:

C:\>set path=C:\Program Files (x86)\Java\jdk1.7.0\bin

1
私はその権利を逃しましたが、ここに私の懸念を投稿するときの私の誤植でした。私はそれをチェックしました、そして、すべてが正しく綴られていますが、それでも私に同じエラーを与えます。
user987137 2011年

1
@ user987137。明らかに、何かが間違っています。指定された場所にJDK(注意-JDKではなくJDK)がインストールされていますC:\Program Files (x86)\Java\jdk1.7.0か?もしそうなら、あなたがcd C:\Program Files (x86)\Java\jdk1.7.0\binそうするとjavac -versionどうなりますか?
Raghuram、2011年

3
正しいパスを設定していても、Win XPでJDKを設定するときに同じエラーが発生しました。コマンドプロンプトを閉じて再度開くだけで修正されました。
Chris J

@ChrisJ-これは、新しいコマンドプロンプトが新しいセッションで開始されるため、更新された環境変数もロードするためです。
Cyclonecode 2016年

17

コマンドプロンプトから次のコマンドを実行します。 set Path="C:\Program Files\Java\jdk1.7.0_09\bin" または set PATH="C:\Program Files\Java\jdk1.7.0_09\bin"

私はこれを試しました、そしてそれはうまくいきます。


thx、これはWindowsで動作しました
Csaba

いい答えだ。Windows 10で私のために働いた
Roger

5

javaコマンドが機能していて、javacに問題がある場合。次に、最初にjdkのbinディレクトリをチェックします。javac.exeファイルがあるかどうかを確認します。javac.exeファイルが存在する場合はJAVA_HOME、システム変数として設定します。


3

環境変数を確認してください。

私の場合、システム変数ユーザーアカウント変数にJAVA_HOMEが設定されていて、後者はJavaの誤ったバージョンに設定されていました。Path変数にも同じ問題がありました。

、私のユーザーアカウントからJAVA_HOMEを削除変数とそれが正しく働いていたPath変数から間違ったパスを取り除きます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.