Статьи

Очистка реестра Windows после ранней версии JDK 9

В моем последнем сообщении в блоге я продемонстрировал решение проблем, связанных с символическими ссылками Oracle Java ( C:\ProgramData\Oracle\Java\javapath\ на компьютерах под управлением Windows) после установки раннего выпуска JDK 9 (сборка 68). это, казалось, мешало автоматической установке более ранних (более стабильных) версий Java. Даже с символическими ссылками, исправленными в C:\ProgramData\Oracle\Java\javapath\ , я все еще не был полностью « вне леса », но все же имел отношение к возвращению к JDK 8 из раннего выпуска JDK 9. У меня был некоторые проблемы с реестром, которые необходимо решить, и в этом посте кратко изложены эти усилия.

20150702-Java19RegistryKeyInsteadOfJava18

1
2
3
4
Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'
has value '1.9', but '1.8' is required.
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.

Первое предупреждение («Ошибка: раздел реестра« Software \ JavaSoft \ Java Runtime Environment »\ CurrentVersion» имеет значение «1,9», но требуется «1,8». ») Устраняется путем изменения значения описанного ключа реестра (Software \ JavaSoft \ Java Runtime Environment \ CurrentVersion) в точности рекомендованным способом (от 1.9 до 1.8 в моем случае).

На следующем снимке экрана показан редактор реестра моего ноутбука Windows 7 (запущенный из DOS с помощью команды regedit) до того, как я исправил проблему. Обведенная кружком версия («1.9») неверна, и щелчок правой кнопкой мыши по ключу «CurrentVersion» позволил мне выбрать «Изменить», а затем изменить поле значения с 1.9 ″ на «1.8» (см. Как изменить реестр Windows для подробнее об изменении реестра Windows ). Я сделал то же самое для «CurrentVersion» в области «Software Development Kit», как и для показанной области «Java Runtime Environment».

20150702-regeditJavaCurrentVersion-19

На снимке экрана редактора реестра также отображается проблема, связанная с двумя другими аспектами предупреждающего сообщения («Ошибка: не удалось найти java.dll» и «Ошибка: не удалось найти среду выполнения Java SE».). Как показывает снимок экрана, в «среде выполнения Java» нет области «1.8», как для «1.6», «1.7» и «1.9». Я создал область «1.8» под «Java Runtime Environment» и создал ключи в этой области, адаптированные из ключей «1.7». Результат показан на следующем снимке экрана.

20150702-windowsRegistryWithJRE8

Вы можете заметить, что я удалил записи JDK 9 из реестра. Я сделал это, потому что раньше я экспериментировал только с JDK 9 и теперь был готов вернуться к последней версии JDK 8 для более общего использования. Кроме того, у меня все еще есть доступ к загруженному архивному файлу, из которого я установил JDK 9, и могу использовать его снова, если это необходимо, но я думаю, что я с большей вероятностью загрузлю последнюю сборку JDK 9 (сборка 70 на момент написания этой статьи). ) и установите его, когда я снова буду готов поэкспериментировать с последним JDK 9.

Запуск «java -version» позволяет легко определить, что моя среда выполнения Java работает снова.

20150702-java8up45IsBack

Больше нет ошибок реестра при запуске Java! Я также могу сказать, что исправление было успешно применено, потому что запуск JEdit больше не приводит к сообщению, которое я видел ранее, которое воспроизводится здесь:

20150702-javaRuntimeRegistryIssues

Плохие или отсутствующие записи реестра JRE / JDK также могут повлиять на Java IDE и другие приложения на основе Java, поэтому хорошо, чтобы все было вычищено.

Возможно, самый простой подход (с точки зрения необходимости очень мало знать о деталях реестра Windows ) для устранения проблем с реестром Java на компьютере с Windows — это следовать советам по удалению всех версий Java из системы и переустановке. Однако это может показаться немного резким, и другие подходы обсуждаются в потоке потока StackOverlow. Ошибка при проверке версии Java: не удалось найти java.dll : переустановка , проверка конфликтующих переменных среды в переменных среды SYSTEM и USER, прямые манипуляции с реестром .