Tại sao java.exe không hiển thị từ cygwin, nhưng hiển thị từ dấu nhắc lệnh?


Câu trả lời:


14

Trong các phiên bản x64 của Windows 8/7 / Vista, nội dung của thư mục C: \ Windows \ System32 phụ thuộc vào độ bit của ứng dụng.

Đối với các ứng dụng 64 bit (như Dấu nhắc lệnh của Windows cmd.exe), không có chuyển hướng hệ thống tệp:
C:\Windows\System32(trong phần mềm) -> C:\Windows\System32(trên đĩa).
Vì vậy, thư mục C: \ Windows \ System32 chứa các tệp DLL và EXE 64 bit, từ quan điểm của ứng dụng 64 bit.

Đối với các ứng dụng 32 bit (chẳng hạn như bash.exetừ Cygwin) chạy qua hệ thống con WoW64 trên Windows x64, có hai chuyển hướng trong hệ thống tệp:
C:\Windows\System32(trong phần mềm) -> C:\Windows\SysWOW64(trên đĩa).
C:\Windows\Sysnative(trong phần mềm) -> C:\Windows\System32(trên đĩa).
Vì vậy, thư mục C: \ Windows \ System32 chứa các tệp DLL và EXE 32 bit, từ quan điểm của ứng dụng 32 bit.

Nếu bạn muốn truy cập các ứng dụng 64 bit và tệp DLL (chẳng hạn như java*.exe) từ các ứng dụng 32 bit (chẳng hạn như của Cygwin bash.exe), bạn cần sử dụng C:\Windows\Sysnativeđường dẫn hoặc /cygdrive/c/Windows/Sysnativeký hiệu Cygwin.

(đây là câu trả lời cập nhật và mở rộng)


Vâng, họ đang ở đó: Chloe @ xps / cygdrive / c / Windows / sysnative $ ls -la java * -rwx ------ + 1 HỆ THỐNG HỆ THỐNG 188320 Mar 7 04:43 java.exe
Chloe

Tại sao nó làm điều đó? Tôi không thể thấy sysnative từ dấu nhắc DOS.
Chloe

2
Vì vậy, bash.exe của cygwin chạy dưới dạng ứng dụng 32 bit và trong bối cảnh đó C: \ Windows \ System32 được ánh xạ tới C: \ Windows \ SysWOW64 (một thư mục không có tệp java *). Dấu nhắc lệnh Windows (cmd.exe) chạy dưới dạng ứng dụng 64 bit và do đó, nó có thể thấy đúng C: \ Windows \ System32. Sử dụng C: \ Windows \ sysnative để truy cập thư mục system32 thực từ các ứng dụng 32 bit. Thông tin thêm về chủ đề này: msdn.microsoft.com/en-us/l
Library / windows / desktop / Kẻ

Wow đó là hoàn toàn lạc hậu và khó hiểu!
Chloe

1
Có, họ đã tạo thư mục \ Windows \ system64 cho các tệp DLL và EXE hệ thống 64 bit, nhưng thật không may, chúng tôi có các tệp 64 bit trong thư mục System32 và chuyển hướng hệ thống tệp lúng túng.
Mikhail Kupchik
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.