0

こちらのドキュメントのリンクに従って

PATH で最初に見つかった Java 実行可能ファイルを見つけるには、次のコマンドを実行します。

which java

このコマンドは、私のマシンで次の 3 つのパスを返します

C:\>which java
C:\Windows\system32\java.EXE
C:\Program Files (x86)\Java\jre7\bin\java.EXE
C:\Windows\System32\java.EXE

C:\Windows\System32 に java.exe はありません。その場所に Java (Java SE 7 Update 25) がインストールされていますC:\Program Files (x86)\Java\jre7\ これは、「where java」を実行することでも確認できます

C:\>where java
C:\Program Files (x86)\Java\jre7\bin\java.exe

Path=C:\Program Files (x86)\Java\jre7\bin;環境変数を設定しました。このパスは、どの環境変数でも使用されていません。

私が知りたいのは、どのように、なぜwhich java戻ってくるのかC:\Windows\System32\java.EXE、それも2回ですか?

Windows にはネイティブ コマンドがないため、次のスクリプトで "which" を模倣するためwhichに a が作成されていることがわかりました。which.exe

@for %%a in (%PATH%) do @if exist %%a\%1 (
 for /f %%b in ('dir /b %%a\%1') do @echo %%a\%%b
)

@rem for %a in (%PATH%) do @if exist %a\which* dir /b /w %a\which*
4

3 に答える 3

1

OS は Windows 7 64 ビットである必要があります。jre と which コマンドは 32 ビット アプリケーションです。64 ビット オペレーティング システムは、その%SystemRoot%\system32ディレクトリを 64 ビット ライブラリと実行可能ファイルに使用します。これは下位互換性の理由から行われます。多くのレガシー アプリケーションはそのパスを使用するようにハードコードされているからです。32 ビット アプリケーションを実行する場合、は 32 ビット DLL を32 ビット ライブラリと実行可能ファイルを含むにWoW64透過的にリダイレクトします。%SystemRoot%\SysWoW64したがってC:\Windows\system32\java.EXE、32 ビット アプリケーションの場合は、実際にはC:\Windows\SysWoW64\java.EXE.

于 2013-10-24T01:40:54.233 に答える
0

私のシステムではjava.exe、も持っていC:\WINDOWS\system32ます。そしてjavaw.exeそしてjavaws.exe。結局のところ、それらは私が持っているのとまったく同じファイルですC:\Program Files\Java\jdk7\bin。そのため、パスの問題を防ぐために、Java インストーラーがそれらをシステム ディレクトリにコピーした可能性があります。

于 2013-06-25T08:47:24.923 に答える