Mengapa saya tidak bisa melihat java.exe dari Cygwin?
sumber
Dalam edisi x64 Windows 8/7 / Vista, isi folder C: \ Windows \ System32 tergantung pada bitness aplikasi.
Untuk aplikasi 64-bit (seperti Windows Command Prompt, cmd.exe
) , tidak ada pengalihan sistem file:
C:\Windows\System32
(dalam perangkat lunak) -> C:\Windows\System32
(pada disk).
Jadi, folder C: \ Windows \ System32 berisi file DLL dan EXE 64-bit, dari sudut pandang aplikasi 64-bit.
Untuk aplikasi 32-bit (seperti bash.exe
dari Cygwin) yang berjalan melalui subsistem WoW64 pada Windows x64, ada dua pengalihan dalam sistem file:
C:\Windows\System32
(dalam perangkat lunak) -> C:\Windows\SysWOW64
(pada disk).
C:\Windows\Sysnative
(dalam perangkat lunak) -> C:\Windows\System32
(pada disk).
Jadi, folder C: \ Windows \ System32 berisi file DLL dan EXE 32-bit, dari sudut pandang aplikasi 32-bit.
Jika Anda ingin mengakses aplikasi 64-bit dan file DLL (seperti java*.exe
) dari aplikasi 32-bit (seperti Cygwin bash.exe
), Anda perlu menggunakan C:\Windows\Sysnative
jalur, atau /cygdrive/c/Windows/Sysnative
dalam notasi Cygwin.
(ini adalah jawaban yang diperbarui dan diperluas)