Почему я не вижу java.exe от Cygwin?
1 ответ
В 64-разрядных выпусках Windows 8/7/Vista содержимое папки C:\Windows\System32 зависит от разрядности приложения.
Для 64-разрядных приложений (таких как командная строка Windows, cmd.exe
) перенаправление файловой системы отсутствует:
C:\Windows\System32
(в программном обеспечении) -> C:\Windows\System32
(на диске).
Итак, папка C:\Windows\System32 содержит 64-битные файлы DLL и EXE с точки зрения 64-битного приложения.
Для 32-разрядных приложений (таких как bash.exe
из Cygwin), которые работают через подсистему WoW64 в Windows x64, в файловой системе существует два перенаправления:
C:\Windows\System32
(в программном обеспечении) -> C:\Windows\SysWOW64
(на диске).
C:\Windows\Sysnative
(в программном обеспечении) -> C:\Windows\System32
(на диске).
Итак, папка C:\Windows\System32 содержит 32-битные файлы DLL и EXE с точки зрения 32-битного приложения.
Если вы хотите получить доступ к 64-битным приложениям и файлам DLL (таким как java*.exe
) из 32-битных приложений (например, Cygwin's bash.exe
), вам нужно использовать путь C:\Windows\Sysnative
или /cygdrive/c/Windows/Sysnative
в нотации Cygwin.
(это обновленный и расширенный ответ)