0

根据此处的文档链接

要找出在 PATH 中找到的第一个 java 可执行文件,请执行:

which java

此命令在我的机器中返回以下三个路径

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以及两次?

由于 Windows 中没有本机which命令,我刚刚发现which.exe已创建 a 以使用以下脚本模仿“which”

@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

您的操作系统必须是 Windows 7 64 位。而你的 jre 和 which 命令是 32 位应用程序。64 位操作系统使用该%SystemRoot%\system32目录存放其 64 位库和可执行文件。这样做是出于向后兼容性的原因,因为许多遗留应用程序都经过硬编码以使用该路径。执行 32 位应用程序时,WoW64透明地将 32 位 DLL 重定向到%SystemRoot%\SysWoW64包含 32 位库和可执行文件的 . 因此C:\Windows\system32\java.EXE对于 32 位应用程序实际上是C:\Windows\SysWoW64\java.EXE.

于 2013-10-24T01:40:54.233 回答
1

system32 中的 java.exe 看起来很奇怪,但是当你没有 java.exe 时它就很好。更奇怪的是我的Windows7上没有“which”命令,只是在哪里。“哪个”可能来自PATH上的其他路径?

于 2013-06-25T08:40:38.497 回答
0

在我的系统上,我也有java.exein C:\WINDOWS\system32。和javaw.exejavaws.exe。事实证明,这些文件与我在C:\Program Files\Java\jdk7\bin. 因此,Java 安装程序似乎可能将它们复制到系统目录以防止出现路径问题。

于 2013-06-25T08:47:24.923 回答