Perché java.exe non è visibile da Cygwin, ma è visibile dal prompt dei comandi?


Risposte:


14

Nelle edizioni x64 di Windows 8/7 / Vista, i contenuti della cartella C: \ Windows \ System32 dipendono dal testimone dell'applicazione.

Per le applicazioni a 64 bit (come il Prompt dei comandi di Windows cmd.exe) non è presente il reindirizzamento del file system:
C:\Windows\System32(nel software) -> C:\Windows\System32(su disco).
Quindi, la cartella C: \ Windows \ System32 contiene file DLL ed EXE a 64 bit, dal punto di vista dell'applicazione a 64 bit.

Per le applicazioni a 32 bit (come bash.exeCygwin) che funziona tramite il sottosistema WoW64 su Windows x64, ci sono due reindirizzamenti nel filesystem:
C:\Windows\System32(nel software) -> C:\Windows\SysWOW64(sul disco).
C:\Windows\Sysnative(nel software) -> C:\Windows\System32(su disco).
Quindi, la cartella C: \ Windows \ System32 contiene file DLL ed EXE a 32 bit, dal punto di vista dell'applicazione a 32 bit.

Se si desidera accedere alle applicazioni a 64 bit e ai file DLL (come java*.exe) da applicazioni a 32 bit (come Cygwin bash.exe), è necessario utilizzare il C:\Windows\Sysnativepercorso o /cygdrive/c/Windows/Sysnativenella notazione Cygwin.

(questa è una risposta aggiornata ed estesa)


Sì, ci sono: Chloe @ xps / cygdrive / c / Windows / sysnative $ ls -la java * -rwx ------ + 1 SISTEMA DI SISTEMA 188320 7 marzo 04:43 java.exe
Chloe

Perché lo fa? Non riesco a vedere sysnative dal prompt di DOS.
Chloe

2
Quindi, bash.exe di cygwin funziona come applicazione a 32 bit e in quel contesto C: \ Windows \ System32 è mappato su C: \ Windows \ SysWOW64 (una cartella senza file java *). Il prompt dei comandi di Windows (cmd.exe) viene eseguito come applicazione a 64 bit e quindi è in grado di vedere il vero C: \ Windows \ System32. Utilizzare C: \ Windows \ sysnative per accedere alla directory system32 vera dalle applicazioni a 32 bit. Ulteriori informazioni su questo argomento: msdn.microsoft.com/en-us/library/windows/desktop/…
Mikhail Kupchik

Caspita, è totalmente arretrato e confuso!
Chloe

1
Sì, avrebbero dovuto creare la directory \ Windows \ system64 per i file DLL e EXE di sistema a 64 bit, ma sfortunatamente abbiamo file a 64 bit nella directory System32 e reindirizzamento del file system scomodo.
Mikhail Kupchik l'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.