2014-10-06 2 views
3

На одном из моих coleagues машины, если вы просто посмотрите на Java вы можете найти его:Почему Perl не видит файл, который существует в Windows?

c:\>where java 
C:\Windows\system32\java.exe 

Однако, если я делаю это испытание в Perl:

c:\>perl -e "print (-e 'c:\\windows\\system32\\java.exe' ? 'found' : 'not found')" 
not found 

(это прекрасно работает на моем машина). Я слышал о каком-то странном кеше, где файлы становятся поддельными, поэтому они сортируются, но я понятия не имею, что это может быть вызвано, и ничего, что я искал в googled.

+6

Возможно WOW64 файловой системы Перенаправление, если вы используете 32-разрядную Perl на 64-битных ОС Windows - доступ к '% SYSTEMROOT% \ System32' будет перенаправлен на '% SYSTEMROOT% \ Syswow64'. –

ответ

0

Как упоминалось в комментарии к вопросу Эндрю Медико, проблема заключалась в путанице, вызванной запуском 32-битного perl.

Система, о которой идет речь, имела «c: \ windows \ system32 \ java.exe», но не имела «c: \ windows \ syswow64 \ java.exe». Я смог решить свою проблему, ища «c: \ windows \ sysnative \ java.exe», если «c: \ windows \ system32 \ java.exe», похоже, не существует.

Я нашел это описание очень полезным:

http://www.samlogic.net/articles/32-64-bit-windows-folder-x86-syswow64.htm

Смежные вопросы