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.
経験豊富な読者向け:
C:\Program Files\Java\jdkxxxx\bin\
PATH
を調べます。古いJavaパスを削除します。PATH
に追加します。Java_HOME
を編集します。ようこそ!
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
で実現されます。
environment variable は、特別なキーと値のペアです(例: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
が 内部コマンド ではないことに気づいたときに、 system 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
に追加する必要があります。
(これを既に理解している場合は、このセクションをスキップしてください。)
Javaをダウンロードするとき、次のいずれかを選択できます。
Java
は含まれていますが、javac
は含まれていません。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
そんなことしたらダメ。そのコマンドにはいくつかの大きな問題があります。
PATH
からelseをすべて消去し、Javaパスに置き換えます。このコマンドを実行した後、他のさまざまなコマンドが機能しない場合があります。C:\Program Files\Java\jdk1.7.0_09\bin
–ほとんど間違いなく、新しいバージョンのJDKがあります。別のパス。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をインストールしたhowに依存します。
セットアッププログラムを実行して、Javaをインストールしました。 Oracleのインストーラーは、JavaのバージョンをC:\Program Files\Java\
(またはC:\Program Files (x86)\Java\
)の下に配置します。エクスプローラーまたはコマンドプロンプトを使用して、そのディレクトリに移動します。
各サブフォルダーはJavaのバージョンを表します。 1つしかない場合は、それを見つけました。それ以外の場合は、新しいバージョンのように見えるものを選択します。フォルダー名がjdk
で始まることを確認してください(jre
ではなく)。ディレクトリを入力します。
次に、そのbin
ディレクトリを入力します。
これで正しいディレクトリに移動しました。パスをコピーします。エクスプローラーの場合は、アドレスバーをクリックします。コマンドプロンプトの場合、 copy プロンプト。
結果のJavaパスは次の形式(引用符なし)である必要があります。
C:\Program Files\Java\jdkxxxx\bin\
JDKを含む.Zipをダウンロードしました。邪魔にならないランダムな場所に抽出します。 C:\Java\
は選択可能です。
次に、bin
フォルダーをその中のどこかに配置します。
これで正しいディレクトリに移動しました。そのパスをコピーします。これはJavaパスです。
フォルダーを移動しないでください。パスが無効になるためです。
これは、PATH
を編集するためのダイアログです。 Windowsのバージョン、UI設定、およびシステム構成の混乱に応じて、このダイアログにアクセスする方法は多数あります。
これらのいくつかを試してください:
control sysdm.cpl,,3
SystemPropertiesAdvanced.exe
"環境変数Control Panel\System and Security\System
"システムの詳細設定(左端、サイドバー)"環境変数これらのいずれでも、正しい設定ダイアログが表示されます。
Windows 10を使用している場合、MicrosoftはPATH
を編集するために fancy new UI を用意しています。それ以外の場合は、セミコロンで覆われた栄光にPATH
が表示され、1行のテキストボックスに絞り込まれます。システムを破壊することなく、必要な編集を行うために最善を尽くします。
PATH
を消去PATH
を見てください。ほとんど間違いなく、2つのPATH
変数があります(ユーザー環境変数とシステム環境変数のため)。両方を見る必要があります。
other Javaパスを確認して削除します。それらの存在はあらゆる種類の衝突を引き起こす可能性があります。 (たとえば、PATH
にJRE 8とJDK 11がこの順序である場合、javac
はJava 11コンパイラーを呼び出します。これにより、バージョン55 .class
ファイルが作成されますが、Java
は呼び出されますJava 8 JVM、バージョン52までしかサポートしていないため、 サポートされていないバージョンエラー が発生し、プログラムをコンパイルおよび実行できません。 PATH
にはJavaパスが1つだけあることを確認してください。そして、あなたがそれをしている間に、 古いJavaバージョンをアンインストール にすることもできます。そして、あなたが 持っている必要はない JDKとJREの両方であることを忘れないでください。
C:\ProgramData\Oracle\Java\javapath
がある場合は、も削除します。オラクルは、常に最新のJavaインストールを指す シンボリックリンク を作成することにより、アップグレード後にJavaパスが壊れる問題を解決することを意図していました。残念ながら、しばしば間違った場所を指すことになるか、または 単に機能しない になります。このエントリを削除し、Javaパスを手動で管理することをお勧めします。
これは、PATH
に対して一般的なハウスキーピングを実行する良い機会でもあります。 PCにインストールされていないソフトウェアに関連するパスがある場合は、それらを削除できます。また、パスの順序を入れ替えることもできます(そのようなことを気にする場合)。
PATH
に追加次に、3ステップ前に見つけたJavaパスを取得して、システムPATH
に配置します。
リスト内の新しいパスがどこに行くかは問題ではありません。最後に配置するのは良い選択です。
Windows 10以前のUIを使用している場合は、セミコロンが正しく配置されていることを確認してください。リスト内のすべてのパスを区切るのは1つだけです。
ここで言うべきことは他にあまりありません。 PATH
にパスを追加して、[OK]をクリックします。
Java_HOME
を設定その間、Java_HOME
を設定することもできます。これは、Javaパスも含む必要がある別の環境変数です。人気のあるJavaビルドシステム Gradle など、多くのJavaおよび非Javaプログラムは、正しく設定されていないとエラーをスローします。
Java_HOME
が存在しない場合は、新しいシステム環境変数として作成します。 PATH
に追加したのと同じJavaパスに設定します。
Javaをアップグレードした後は、Java_HOME
も必ず編集してください。
PATH
を変更しましたが、cmdを含むすべての実行中のプログラムは、古いPATH
のみを表示します。これは、すべての環境変数のリストが実行を開始するときにのみプログラムにコピーされるためです。その後、キャッシュされたコピーのみを参照します。
cmdの環境変数を更新する に良い方法はないので、単にコマンドプロンプトを閉じて再度開きます。 IDEを使用している場合は、IDEを閉じて再度開きます。
これを試してください。私もそれを持っていましたが、今ではXPで解決しました.
C:\ YourFolder >set path=C:\Program Files\Java\jdk1.7.0_09\bin;
C:\ YourFolder >javac YourCode.Java
set
コマンドの入力ミス - C:
の後にバックスラッシュを付けませんでした。そのはず:
C:\>set path=C:\Program Files (x86)\Java\jdk1.7.0\bin
コマンドプロンプトから次のコマンドを実行します。set Path="C:\Program Files\Java\jdk1.7.0_09\bin"
またはset PATH="C:\Program Files\Java\jdk1.7.0_09\bin"
私はこれを試しました、そしてそれはうまくいきます。
Javaコマンドが動作していてjavacで問題が発生している場合その後、最初にjdkのbinディレクトリにあるjavac.exeファイルをチェックインします。 javac.exeファイルが存在する場合は、システム変数としてJava_HOME
を設定します。
環境変数を確認してください。
私の場合は、 システム変数 および私の ユーザーアカウント 変数にJava_HOMEを設定し、後者は 間違ったバージョンのJava に設定しました。 Path変数についても同じ問題がありました。
私のユーザーアカウント variablesからJava_HOMEを削除し、Path変数から誤ったパスを削除した後、正しく機能していました。