1

Я загружаю 32-битную версию Java, с Java.com, http://java.com/en/download/manual.jsp. Сохраняет как

JRE-6u27-окна-i586-s

Тем не менее, когда я его устанавливаю, вместо этого устанавливается 64-битная версия (??). В папке /System32 нет файла javaw.exe, но он находится в папке SysWOW64.

У меня никогда не было этой проблемы раньше. Что делать? Мне это нужно для 32-битных программ Java.

2 ответа2

3

Это именно то, где оно принадлежит. Со страницы Википедии на WoW64 :

Операционная система использует каталог% SystemRoot%\system32 для своей 64-битной библиотеки и исполняемых файлов. Это сделано из соображений обратной совместимости, поскольку многие устаревшие приложения жестко заданы для использования этого пути. При выполнении 32-разрядных приложений WoW64 прозрачно перенаправляет 32-разрядные библиотеки DLL в% SystemRoot%\SysWOW64, который содержит 32-разрядные библиотеки и исполняемые файлы. 32-разрядные приложения, как правило, не знают, что они работают в 64-разрядной операционной системе. 32-разрядные приложения могут обращаться к% SystemRoot%\System32 через псевдо-каталог% SystemRoot%\sysnative.

1

Почему 64-битные dll попадают в System32, а 32-битные dll в SysWoW64 в 64-битной Windows?

Насколько я понимаю, в 64-битной системе Windows System32 зарезервирован для 64-битных двоичных файлов. Поэтому было бы неправильно помещать туда 32-битный двоичный файл javaw.exe.

Программы, которые должны вызывать Java-программы, на самом деле не должны иметь жестко запрограммированное местоположение javaw.exe, они должны полагаться на PATH.

Как выполнить программу на Java из C #?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .