根据此处的文档,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.EXEC:\Windows\System32中没有java.exe。我在C:\Program Files (x86)\Java\jre7\位置安装了java (JavaSE7Update25),这也是通过运行"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”的命令
@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*发布于 2013-06-25 16:40:38
system32中的java.exe看起来很奇怪,但是如果没有java.exe就没问题了。更奇怪的是,我的Windows7上没有“哪个”命令,只有在哪里。有可能“哪个”来自PATH上的其他路径?
发布于 2013-10-24 09:40:54
您的操作系统必须是64位Windows 7。而你的jre和哪些命令都是32位应用程序。64位操作系统将%SystemRoot%\system32目录用于其64位库和可执行文件。这样做是出于向后兼容性的原因,因为许多遗留应用程序都被硬编码为使用该路径。在执行32位应用程序时,WoW64会透明地将32位DLL重定向到包含32位库和可执行文件的%SystemRoot%\SysWoW64。因此,32位应用程序的C:\Windows\system32\java.EXE实际上是C:\Windows\SysWoW64\java.EXE。
发布于 2013-06-25 16:47:25
在我的系统上,我也有C:\WINDOWS\system32中的java.exe。还有javaw.exe和javaws.exe。事实证明,这些文件与我在C:\Program Files\Java\jdk7\bin中拥有的文件完全相同。因此,Java安装程序似乎将它们复制到了系统目录中,以防止路径问题。
https://stackoverflow.com/questions/17292591
复制相似问题