TL; DR
経験豊富な読者向け:
- 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では、ある二つのタイプ:ユーザー環境変数とシステム環境変数が。
次のような環境変数を確認できます。
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ランタイム環境 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
やめてください。このコマンドにはいくつかの大きな問題があります。
- このコマンドは、他のすべてのものを消去
PATH
し、Javaパスに置き換えます。このコマンドを実行した後、他のさまざまなコマンドが機能しない場合があります。
- 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をインストールした場所を見つけることから始まります。これは、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_HOME
Javaのアップグレード後も必ず編集してください。
コマンドプロンプトを閉じて再度開く
を変更しましたがPATH
、cmdを含むすべての実行中のプログラムは古いのみを表示しPATH
ます。これは、すべての環境変数のリストが、プログラムの実行開始時にのみプログラムにコピーされるためです。その後は、キャッシュされたコピーのみを調べます。
cmdの環境変数を更新する適切な方法はないため、コマンドプロンプトを閉じて再度開くだけです。IDEを使用している場合は、IDEも閉じて再度開きます。
こちらもご覧ください