Как предотвратить установку java.exe в system32 Windows? - PullRequest
17 голосов
/ 22 ноября 2011

Есть ли способ предотвратить копирование java.exe в каталог C:\Windows\system32 процедуры установки Java (например, jdk-7u1-windows-i586.exe ) *

Я должен установить свое программное обеспечение на ноутбук клиента, и я не хочу ломать другие приложения Java, которые уже установлены на компьютере. Другими словами, я хочу установить частный JRE , который используется только моим программным обеспечением.

К настоящему времени я скопировал уже установленную JRE со своего компьютера на компьютер клиента.

Ответы [ 6 ]

8 голосов
/ 08 ноября 2012

Вчера я обнаружил, что существует проблема с версиями Java в Windows , поскольку вы знаете, что поддерживать Java в актуальном состоянии в наши дни очень важно, особенно JRE, используемая Internet Explorer, расположенная в системе Windows32 или syswow64 папка.

Вы можете выполнить поиск java на диске C: и просмотреть различные найденные исполняемые файлы, чтобы определить, применима ли ситуация в конкретной системе.

После некоторых исследований я обнаружил, что при запуске Java Updater он обновляет только те файлы, которые установлены в JAVA home, обычно находятся в файлах программы, но он НЕ обновляет файлы. находится в системной папке Windows . В результате, поскольку системная папка находится в системном PATH по умолчанию, Internet Explorer продолжает использовать старую версию файлов JAVA (java.exe, javaw.exe, javaws.exe)

Решение заключается в удалении Java с помощью панели управления. функция удаления программ, загрузка последней версии и повторная установка .

Ура! Fernando

6 голосов
/ 24 апреля 2015

Я недавно обновился до java 8 и обнаружил эту проблему, поскольку java-версия под system32 все еще была java 7. Она останавливает вас даже при запуске версии, поскольку она жалуется на ключи реестра

U:\>java -version
Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'
has value '1.8', but '1.7' is required.
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.

Выполнение следующего указало мне на виновника:

U:\>where java
C:\Windows\System32\java.exe
C:\Program Files\Java\jdk1.8.0_45\bin\java.exe

Я «решил» эту проблему, просто удалив Java под system32! Я не уверен, какие последствия это будет иметь.

4 голосов
/ 22 ноября 2011

Вы можете просто указать JRE, которую хотите использовать в своем программном обеспечении, и:

  • Установите переменную JAVA_HOME перед запуском приложения
  • Укажите правильный файл java.exe (например, ..\jre1.5.0_22\bin\java <your_java_main>)

Это можно сделать, например, в файле * .bat.

После запуска созданного вами файла * .bat все остальные версии Java будут игнорироваться, и не будет иметь значения, какие версии установлены или будут установлены на этом компьютере.

1 голос
/ 06 июня 2015

Все, что вам нужно сделать, это зайти в Панель управления -> Программы Удалить программу. Удалите старые обновления Java и сохраните самое новое обновление Java и обновление Java Development Kit. Ваше новейшее обновление Java и комплект разработки Java должны иметь одинаковые номера.

1 голос
/ 13 ноября 2014

Я обнаружил, что новейший JDK все еще не пишет правильный код для реестра. Проблема в том, что если на компьютере нет JRE, JDK неправильно регистрирует JRE в реестре.

Для тех, кто установил JDK 1.7u72 Просто добавьте Software \ JavaSoft \ Java Runtime Environment, как указано в сообщении об ошибке. И добавьте строковую запись CurrentVersion со значением 1.7. Затем добавьте Software \ JavaSoft \ Java Runtime Environment \ 1.7 и добавьте строковую запись JavaHome со значением «C: \ Program Files \ Java \ jre7». И JRE будет работать правильно. Виноват Oracle, если вы используете реестр, то напишите правильный код, иначе не используйте реестр!

0 голосов
/ 22 ноября 2011

Один из способов, которым я бы попытался, - создать пустой файл только для записи с именем java.exe в папке System32.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...