为什么我无法从 Cygwin 看到 java.exe?
答案1
在 Windows 8/7/Vista 的 x64 版本中,C:\Windows\System32 文件夹的内容取决于位数应用程序。
对于 64 位应用程序(例如 Windows 命令提示符cmd.exe
),没有文件系统重定向:(
C:\Windows\System32
在软件中)-> C:\Windows\System32
(在磁盘上)。
因此,从 64 位应用程序的角度来看,C:\Windows\System32 文件夹包含 64 位 DLL 和 EXE 文件。
对于通过 Windows x64 上的 WoW64 子系统运行的 32 位应用程序(例如bash.exe
来自 Cygwin),文件系统中有两个重定向:(
C:\Windows\System32
在软件中)-> C:\Windows\SysWOW64
(在磁盘上)。
C:\Windows\Sysnative
(在软件中)-> C:\Windows\System32
(在磁盘上)。
因此,从 32 位应用程序的角度来看,C:\Windows\System32 文件夹包含 32 位 DLL 和 EXE 文件。
如果您想java*.exe
从 32 位应用程序(例如 Cygwin 的)访问 64 位应用程序和 DLL 文件(例如bash.exe
),您需要使用C:\Windows\Sysnative
路径,或/cygdrive/c/Windows/Sysnative
Cygwin 表示法。
(这是更新和扩展的答案)