javacがWindowsコマンドプロンプトで機能しない


132

javacWindowsコマンドプロンプトで使用しようとしていますが、機能しません。

環境変数の"C:\Program Files\Java\jdk1.6.0_16\bin\"末尾にディレクトリを追加した後PATHjavaコマンドは正常に機能しますが、使用javacすると次のエラーが発生します。

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


回答:


162

コマンドプロンプトが開いているときにコントロールパネルに追加しても、現在のコマンドプロンプトには影響しません。終了して再度開くか、単に実行する必要があります。

set "path=%path%;c:\program files\java\jdk1.6.0_16\bin"

チェックとして、次を実行します。

echo %path%

コマンドプロンプトから、それが何であるかをお知らせください。

それ以外の場合、そのディレクトリにjavac あることを確認してください。

"c:\program files\java\jdk1.6.0_16\bin\javac.exe"

コマンドプロンプトから。あなたも伝えることができコマンドで使用されている実行可能ファイル(もしあれば):

for %i in (javac.exe) do @echo %~$PATH:i

これは、一部のUNIXタイプのオペレーティングシステムのwhichand / or whenceコマンドに似た巧妙なトリックです。


11
はい、コマンドプロンプトを再度開くだけで、うまくいきました。ありがとうございます。
Domenic

1
+1。"(for%i in(java.exe)do @echo%〜$ PATH:i")が私の一日を救った。私はたまたまWindowsユーザーであり、c:\ windows \ systemに別の隠しjava.exeが存在する可能性があることを知りませんでした:)
david a。

1
上記のset pathコマンドは、Windows 7では機能しません。setpath = "%path%; c:\ program files \ java \ jdk1.6.0_16 \ binを使用する必要がありました。窓はラインコマンドが、引用符が保存されているようですので、%は、それが完全に使用できなくなります%パスでそれらを持つ。。
user716468

@ user716468、コマンドラインではなくウィンドウでこれを行うGUI方法があります。Windows 7を使用している場合は、スタートメニューの検索でvarと入力し、[環境変数の編集]をクリックします。Windows XPを使用している場合は、[マイコンピュータ]を右クリックし、[プロパティ]をクリックして、[詳細設定]タブに移動し、下部にある[環境変数]ボタンをクリックします。そこには2つのリストボックスがあります。下部のリストボックスからPATHという名前のものを見つけて、[編集]をクリックします。次に、セミコロンを前に付けたパスをJDKに追加します。できました!
fz_salam 2013

最近のWindowsコマンドラインに「where」コマンドもあります
x29a

87

Windows OSは、現在のディレクトリと、PATH環境変数にリストされているディレクトリで実行可能プログラムを検索します。JDKのプログラム(Javaコンパイラjavac.exeやJavaランタイムjava.exeなど)は、ディレクトリ「\ bin」にあります(ここで、JDKがインストールされているディレクトリを示します(例:C:\ Program Files \ Java \ jdk1.8.0_xx))。PATHに「\ bin」ディレクトリを含める必要があります。

Windows XP / Vista / 7/8でPATH環境変数を編集するには:

  1. コントロールパネル⇒システム⇒詳細システム設定

  2. 「詳細」タブに切り替える⇒環境変数

  3. 「システム変数」で、下にスクロールして「パス」を選択します⇒編集

((続行する前に次の3回を読んでください。元に戻すことはできません))

「変数値」フィールドで、「c:\ Program Files \ Java \ jdk1.8.0_xx \ bin」を挿入します(xxをアップグレード番号に置き換え、これがJDKのバイナリディレクトリであることを確認してください!!!)既存のすべての前にディレクトリの後にセミコロン(;)が続き、JDKのバイナリディレクトリを既存の残りのディレクトリから分離します。既存のエントリは削除しないでください。そうしないと、一部の既存のアプリケーションが実行されない場合があります。

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[existing entries...]

スクリーンショット


ステップ4では、jre <yournumber>ではなくjdk <yournumber>を選択する必要があることがわかりました。その後、他のすべてがうまくいきました。
モーガンケニオン2013

きちんとクリア!ベストアンサー。私のために働いた。
M_R_K 2014年

私の場合、ステップ4でjdkを開きました。つまり、PATH:C:\ Program Files \ Java \ jdk1.7.0_67 \ binにこれを設定しました。javac.exeはjreではなく、jdkにありました。
sedeh 2014年

Works for Me :)
RAJESH KUMAR ARUMUGAM

34

長いGoogleの後で、javac.exeがJRE(C:\ Program Files(x86)\ Java \ jre7 内ではなく、JDK(C:\ Program Files \ Java \ jdk(version number)\ bin)内にあることを知った\ bin) 「JREにはコンパイラが付属していません。JREは単なるJavaランタイム環境です。必要なのはJava開発キットです。」コンパイラjavacを使用するため

jre内でビンを指している場合、javacは機能しません

cmdでjavacを使用するには、システムにJDKをインストールする必要があります...

javacパスの場合

パス= C:\ Program Files(x86)\ Java \ jre7 \ bin これは間違っています

パス= C:\ Program Files \ Java \ jdk(version number)\ bin これは正しい

「javac.exe」が「C:\ Program Files \ Java \ jdk(version number)\ bin」内にあることを確認してください

JREとJDKを混同しないでください。どちらもまったく異なります。

このリンクからJDK plsをダウンロードしていない場合

https://jdk.java.net/

または

http://www.oracle.com/technetwork/java/javase/downloads/index.html

JDK VS JREの参照スレッド JDKとJREの違いは何ですか?


6

これはあなたの特定のエラーではないかもしれませんが、パスに先行スペースがあったため、javaは機能しましたがjavacは機能しませんでした。

その価値について、私は賢明なアドバイスを提供します:「あなたの道を詳しく調べなさい」。


5

ここで解決策を試してください:http : //techdem.centerkey.com/2009/05/javahome-command-script.html

これらは、ハードコーディングされたパスがないため、JDKまたはJREをアップグレードするときのように、変更に対してはるかに堅牢です。

簡単な解決策(ブログを読みたくない場合)は

C:\>for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
C:\>set PATH=%PATH%;%JAVA_HOME%

次に、これらの行を起動/ログインスクリプトに追加できます。


2
そのようなjavacを呼び出すには、「set PATH =%PATH%;%JAVA_HOME%\ bin」を使用する必要がありました(追加された\ binに注意してください)。
user31389 2016年

4

これをWindows 7 64で機能させるには、これを実行する必要がありました。

コマンドプロンプト(cmd.exe)を開き、次のように入力します。

set CLASSPATH=C:\Program Files\Java\jdk1.7.0_01\bin

実行中のすべてのコマンドプロンプトWindowsを再度開いて、環境変数も更新されていることを確認してください。


1
ここではクラスパスの設定を解除する方が良いと思います。私はCLASSPATH変数を使用しません。特に、それがグローバルで複数のJREに影響を与えるWindowsでは使用しません...
eckes

4

いつもそうであるとは限りませんが、私たちの多くは過去にこの間違いを犯しており、そのうちのいくつかはまだそれを認識していません。つまり、環境変数のパス(任意のパス)を追加するたびに、 「セミコロン」の直後にスペースバーを押す可能性があります(通常のように、エディターでの入力中の「ピリオド」の後)。

これにより、パスに先行スペースが作成されます(例:「C:\ Program Files \ Java \ jdk1.6.0 \ bin」)。したがって、システムは「javac.exe」を見つけることができません。


2

フォルダー「jdk1.7.0_45」「jdk1_7_0_60」を変更し、Windows環境でパスを更新します。それ以外の場合、パスは隠しファイルを表す先頭のドットを無視するため、フォルダーはPATH文字列に表示されません。



0

私はjavaが動作するのとまったく同じ問題に直面しましたが、javacはWindows 8のcmdプロンプトには表示されませんでした。

'>'パス名の最後で削除するのを忘れたため、問題が発生しました。つまり、次のようになりました。

C:\Program Files\Java\jdk*\bin>

これは次のようになると想定されていました:

C:\Program Files\Java\jdk*\bin

0

パスは管理者アカウントにのみ設定されます。したがって、まだの場合は、管理者としてコマンドプロンプトを起動することが重要です。


0

Path変数のパスの間にスペース(空白)を入れないようにしてください。私の問題は、空白があり、WindowsがそれをNULLとして扱い、Javaへのパスを読み取らなかったことだと思いました。


0

このタイトルにも同じ問題が投稿されていました。Javaは機能しますがjavac、Windowsコマンドプロンプト(cmd.exe)。

私にとってC:\Program Files\Java\jdk1.8.0\binは、%PATH%環境変数の最後に追加するときにスペースを置いただけでした。と次のファイルパスの
間のスペースを削除し;ます。


0

私はこれが古い質問であることを感謝しますが、私の解決策はここでの答えではなかったので、他の誰かが残りのすべてを試みた場合に備えて投稿してください。

私の場合、以前のJava JRE(ProgramData / Oracle / Java)のインストールでは、パス変数のリストの一番上にパス変数がありました。その「Oracle」パスの内容にはjava.exeがありましたが、javac.exeがありませんでした。「Oracle」パスの前に、パス変数のリストの一番上に完全なJDKパスを追加し、javac.exeとjavaを選択しました。


0
for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
set JAVA_HOME

この解決策は私にとってうまくいきました


リンクを提供するだけでなく、回答に直接アノテーションを追加することをお勧めします。リンクが壊れる可能性があります。
宜しくお願いし

-3

.javaから.classを作成しようとしたときに、Javacコマンドが機能しませんでした。私はC:\ Program Files(x86)\ Java \ jdk1.7.0_04 \ binに移動してそれを機能させ、そのディレクトリにいるときにJavac.exe C \ Test \ test.javaと入力し、それでクラスを作成しました戦術。試してみてください。


-7

「C:\ Program Files \ Java \ jdk1.6.0_16 \ bin」と指定します。機能するバックスラッシュを削除します


2
私はそれが正しいとは思いません。パスを "C:\ Program Files \ Java \ jdk1.6.0_16 \ bin \"(末尾のスラッシュを含む)だけに設定しても、問題なく動作します。
paxdiablo 2009年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.