32

WindowsXPにJavaJDK6u33をインストールしました。PATH環境変数を設定していなくてもjava -version、コマンドプロンプトで実行できます。

このコマンドを実行するとfor %i in (java.exe) do @echo. %~$PATH:i、次の出力が得られます。 C:\WINDOWS\system32\java.exe

PCをチェックすると、2つのjava.exeがあります:
1。2 C:\Program Files\Java\jdk1.6.0_33\bin\java.exe
C:\WINDOWS\system32\java.exe

system32\java.exeとの違いは何Program Files\Java\jdk1.6.0_33\bin\java.exeですか?system32\java.exe実行したときにのみ表示されるのはなぜfor %i in (java.exe) do @echo. %~$PATH:iですか?

C:\Program Files\Java\jdk1.6.0_33\bin\それでもPATH環境変数に追加する必要がありますか?

4

2 に答える 2

29

変数の設定は、jdkbinフォルダー内の他のプログラムやツールにPATHアクセスできるようにするためのものです。javac

java.exeinは、 (コマンドラインから)Javaプログラムを実行するためだけにPATH変数を設定し、インストールされているJava仮想マシン(JVM)のバージョン(最後にインストールされたように見える)を選択する必要\windows\system32\がないように提供されています。複数の(公に)インストールされています。

詳細については、次のリンクを参照してください。

http://mindprod.com/jgloss/javaexe.html#MULTIPLES

引用:

さらに複雑なことに、system32のjava.exeは単なるダミーです。レジストリを調べて、使用する実際のjava.exeを決定します。最後にインストールされたJVMは、古いものであっても、使用されたものになります。JVMを切り替えるには、通常、必要なものを再インストールする必要があります。

于 2012-06-16T13:43:33.473 に答える
12

(答えではなく、マティアスの答えに対するコメント)この「ダミー」ビジネスについてはよくわかりません。system32のjava.exeは通常のファイルであり、シンボリックリンクやハードリンクでさえありません。Mattiasは、ここで説明されている問題を参照している可能性があります:http: //msdn.microsoft.com/en-us/library/aa384187

簡単に言うと、64ビットシステムとJavaインストールがある場合、32ビットアプリケーションはC:\ Windows \ System32 \にインストールされているjava.exe(またはjavaw.exe、javaws.exe)を認識しません。 C:\ Windows \ System32を装ったC:\ Windows \SysWoW64\が表示されるためです。インストーラーはjava.exeのコピーをSysWoW64に配置できないため、Javaを起動しようとする32ビットアプリは配置に失敗します。エクスプローラーは64ビットアプリであり、「実際の」system32ディレクトリが表示されるため、エクスプローラーを使用してsystem32ディレクトリを検索すると、ユーザーは困惑します。

于 2012-10-11T19:28:01.383 に答える