11

Почему я не вижу java.exe от Cygwin?

Cygwin vs Win8

1 ответ1

14

В 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.

(это обновленный и расширенный ответ)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .