ทำไม java.exe ไม่สามารถมองเห็นได้จาก cygwin แต่มองเห็นได้จาก command-prompt?


คำตอบ:


14

ใน x64 รุ่นของ Windows 8/7 / Vista เนื้อหาของ C: \ Windows \ System32 โฟลเดอร์ขึ้นอยู่กับbitnessของแอพลิเคชัน

สำหรับแอปพลิเคชัน 64 บิต (เช่นพรอมต์คำสั่งของ Windows cmd.exe) ไม่มีการเปลี่ยนเส้นทางระบบไฟล์:
C:\Windows\System32(ในซอฟต์แวร์) -> C:\Windows\System32(บนดิสก์)
ดังนั้นโฟลเดอร์ C: \ Windows \ System32 จึงมีไฟล์ DLL 64 บิตและ EXE จากมุมมองของแอปพลิเคชัน 64 บิต

สำหรับแอปพลิเคชัน 32 บิต (เช่นbash.exeจาก Cygwin) ซึ่งทำงานผ่านระบบย่อย WoW64 บน Windows x64 มีการเปลี่ยนเส้นทางสองครั้งในระบบไฟล์:
C:\Windows\System32(ในซอฟต์แวร์) -> C:\Windows\SysWOW64(บนดิสก์)
C:\Windows\Sysnative(ในซอฟต์แวร์) -> C:\Windows\System32(บนดิสก์)
ดังนั้นโฟลเดอร์ C: \ Windows \ System32 จึงมีไฟล์ DLL และ EXE ขนาด 32 บิตจากมุมมองของแอปพลิเคชันแบบ 32 บิต

หากคุณต้องการเข้าถึงแอปพลิเคชั่น 64- บิตและไฟล์ DLL (เช่นjava*.exe) จากแอปพลิเคชั่น 32- บิต (เช่น Cygwin's bash.exe) คุณต้องใช้C:\Windows\Sysnativeพา ธ หรือ/cygdrive/c/Windows/Sysnativeสัญลักษณ์ Cygwin

(นี่คือคำตอบที่อัปเดตและขยายออกไป)


ใช่พวกเขาอยู่ที่นั่น: Chloe @ xps / cygdrive / c / Windows / sysnative $ ls -la java * -rwx ------ + 1 SYSTEM SYSTEM 188320 Mar 7 04:43 java.exe
Chloe

ทำไมถึงทำเช่นนั้น? ฉันไม่เห็น sysnative จาก DOS prompt
Chloe

2
ดังนั้น bash.exe ของ cygwin จึงทำงานเป็นแอพพลิเคชั่น 32 บิตและในบริบท C: \ Windows \ System32 นั้นถูกแมปกับ C: \ Windows \ SysWOW64 (โฟลเดอร์ที่ไม่มีไฟล์ java *) พรอมต์คำสั่งของ Windows (cmd.exe) ทำงานเป็นแอปพลิเคชัน 64 บิตและดังนั้นจึงสามารถเห็น C: \ Windows \ System32 จริง ใช้ C: \ Windows \ sysnative เพื่อเข้าถึงไดเรกทอรี system32 จริงจากแอปพลิเคชัน 32 บิต ข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนี้: msdn.microsoft.com/en-us/library/windows/desktop/ ......
Mikhail Kupchik

ว้าวที่ย้อนกลับไปโดยสิ้นเชิงและสับสน!
Chloe

1
ใช่พวกเขาควรทำไดเรกทอรี \ Windows \ system64 สำหรับไฟล์ DLL ระบบ 64 บิตและ EXE แต่น่าเสียดายที่เรามีไฟล์ 64 บิตในไดเรกทอรี System32 และการเปลี่ยนเส้นทางระบบไฟล์ที่น่าอึดอัดใจ
Mikhail Kupchik
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.