为什么 java.exe 在 cygwin 中不可见,但在命令提示符中可见?

为什么 java.exe 在 cygwin 中不可见,但在命令提示符中可见?

为什么我无法从 Cygwin 看到 java.exe?

Cygwin 与 Win8

答案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/SysnativeCygwin 表示法。

(这是更新和扩展的答案)

相关内容