根据此处的文档link
要找出第一个在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。
我在位置C:\Program Files (x86)\Java\jre7\
安装了java(Java SE 7 Update 25)
运行“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
以使用以下脚本模仿“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*
答案 0 :(得分:1)
system32中的java.exe看起来很奇怪,但是当你没有java.exe时就好了。更奇怪的是,我的Windows7上没有“which”命令,只是在哪里。 “哪个”可能来自PATH上的其他路径?
答案 1 :(得分:1)
您的操作系统必须是64位Windows 7。你的jre和哪个命令是32位应用程序。
64位操作系统将%SystemRoot%\system32
目录用于其64位库和可执行文件。这是出于向后兼容性原因而完成的,因为许多遗留应用程序都是硬编码以使用该路径。执行32位应用程序时,WoW64
透明地将32位DLL重定向到%SystemRoot%\SysWoW64
,其中包含32位库和可执行文件。
因此,32位应用程序的C:\Windows\system32\java.EXE
实际上是C:\Windows\SysWoW64\java.EXE
。
答案 2 :(得分:0)
在我的系统上,我java.exe
也有C:\WINDOWS\system32
。并javaw.exe
和javaws.exe
。事实证明,这些文件与C:\Program Files\Java\jdk7\bin
中的文件完全相同。因此,Java安装程序似乎可能会将它们复制到系统目录中,以防止出现路径问题。