Недавно прекратили поддерживать Windows XP, и все чаще попадаются грабли, связанные с потерей совместимости. Сегодня столкнулся с проблемой установки новой версии Java SE 1.8.0_05 (установочный пакет jdk-8u5-windows-i586.exe). Инсталлятор оказался несовместимым с 32-битной Windows XP SP3, и выдавал ошибку: "procedure entry point RegDeleteKeyExA could not be located in the dynamic link library ADVAPI32.dll". В переводе на русский язык "точка входа в процедуру RegDeleteKeyExA не найдена в DLL ADVAPI32.dll". В этой статье описан пошаговый процесс ручной, без инсталлятора, установки Java, если по какой-то причине она у Вас не устанавливается.
[Какая текущая версия JDK/Java?]
Иногда полезно узнать, какая версия JDK (Java) сейчас установлена на компьютере. Для этого откройте консоль (запустите интерпретатор CMD) и введите команду:
java -version
В результате будет выведено что-то наподобие:
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b02)
Java HotSpot(TM) Client VM (build 25.5-b02, mixed mode)
Примечание: когда Java установлена, то её исполняемый файл находится в путях запуска. Это либо каталог %Windows%\system32, либо каталог, указанный через переменную Path, например c:\Program Files\Java\jdk1.7.0_45\bin.
[Процесс ручной установки Java (JDK)]
1. Сначала удалите старую версию Java. Это можно сделать через Панель управления -> Установка и удаление программ. Найдите в списке установленных программ все программы, которые начинаются с "Java", и удалите их. После успешного удаления должна перестать выполняться команда java -version, и должны перестать запускаться программы, которые написаны на Java (например, ADT или Eclipse).
2. Закачайте новую версию Java с сайта Oracle [1]. Это будет исполняемый файл наподобие jdk-8u5-windows-i586.exe. Обычно этот файл просто запускают, и он берет всю работу по инсталляции на себя. Если это так, и у Вас процесс инсталляции прошел без ошибок, то дальше можете не читать. Если же нет, и автоматическая инсталляция невозможна (например, Вы получаете ошибку "RegDeleteKeyExA не найдена в DLL ADVAPI32.dll"), то придется немного поработать, чтобы установить Java.
3. Запустите бесплатный архиватор 7-zip, и откройте им файл jdk-8u5-windows-i586.exe. В этом файле будет находиться файл наподобие tools.zip, распакуйте его в любую временную папку на диске.
4. Распакуйте содержимое файла tools.zip в папку наподобие c:\Program Files\Java\jdk1.8.5\. Здесь jdk1.8.5 просто произвольное имя, отражающее версию скачанного JDK. В результате должна получиться примерно такая структура папок:
c:\Program Files\Java\jdk1.8.5>dir
Том в устройстве C не имеет метки.
Серийный номер тома: 7CCB-BDB0
Содержимое папки c:\Program Files\Java\jdk1.8.5
05.05.2014 22:54 < DIR > .
05.05.2014 22:54 < DIR > ..
05.05.2014 20:48 < DIR > bin
05.05.2014 20:48 < DIR > db
05.05.2014 20:48 < DIR > include
18.03.2014 03:14 4 673 034 javafx-src.zip
05.05.2014 20:48 < DIR > jre
05.05.2014 21:37 < DIR > lib
18.03.2014 03:14 40 LICENSE
18.03.2014 03:14 159 README.html
18.03.2014 03:15 526 release
18.03.2014 03:14 123 324 THIRDPARTYLICENSEREADME-JAVAFX.txt
18.03.2014 03:14 178 445 THIRDPARTYLICENSEREADME.txt
6 файлов 4 975 528 байт
7 папок 706 576 891 904 байт свободно
c:\Program Files\Java\jdk1.8.5>
5. Добавьте в переменную окружения %Path% путь c:\Program Files\Java\jdk1.8.5\bin.
6. Добавьте (или измените) переменную окружения %JAVA_HOME%. Она должна указывать на новое положение папки bin:
JAVA_HOME=c:\Program Files\Java\jdk1.8.5
Перелогиньтесь, чтобы изменения в переменных окружения вступили в силу.
В переменной окружения PATH (в командных файлах и в строке интерпретатора cmd для составления путей на неё ссылаются как на %Path%) хранятся пути поиска исполняемых файлов. Это нужно для того, чтобы не надо было вводить длинную строку пути до исполняемого файла, в нашем случае это java.exe и другие утилиты JDK. Т. е. если в переменной Path прописан путь до java.exe, то можно не утруждать себя вводом полного пути до java.exe, операционная система Windows будет знать, где искать исполняемый файл.
Все переменные окружения, в том числе и Path, могут быть просмотрены, изменены, удалены и добавлены командой SET. В переменной Path может быть прописано множество путей. Каждая запись пути отделяется от другой точкой с запятой. Вот например, как можно просмотреть содержимое переменной окружения Path:
Однако новичкам намного проще использовать для редактирования переменной окружения Path инструмент Пуск -> Панель управления -> Система -> закладка Дополнительно -> кнопка внизу Переменные среды. Откроется окно, в котором можно просмотреть (и отредактировать) как настройку Path для текущего пользователя (в верхней части окна "Переменные среды пользователя"), так и настройку Path для всей системы (в нижней части окна "Системные переменные", эта настройка влияет на всех пользователей). Я советую вносить изменения в "Системные переменные".
7. Найдите в папке jdk1.8.5 все файлы с расширением *.pack и распакуйте их с помощью распаковщика unpack200.exe (он находится в папке c:\Program Files\Java\jdk1.8.5\bin), чтобы получить соответствующие файлы *.jar. Все файлы с расширением *.pack можно найти с помощью финдера Windows (вызывается по кнопке F3), или с помощью Total Commander.
Каждый файл *.pack можно распаковать командой наподобие (на примере файла rt.pack):
"%JAVA_HOME%\bin\unpack200" -r rt.pack rt.jar
Примечание: полностью распакованные файлы - всю структуру каталогов, которую достаточно положить в c:\Program Files\Java\, останется только настроить %Path% и %JAVA_HOME% (по шагам 5 и 6) - можно скачать в архиве [2].
На этом установка Java завершена, команда java -version должна нормально отрабатывать из любого каталога.
C:\>java -version
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Client VM (build 25.5-b02, mixed mode)
Примечание: получается, что на одном компьютере может быть одновременно установлено любое количество разных версий Java. Какая версия в данный момент активна, будет определяться исключительно значениями пути в переменной %Path% до каталога bin, и значением переменной окружения %JAVA_HOME% (см. шаги 5 и 6).
[Ярлыки для Java]
После того, как Вы вручную установили Java и проверили её работу, можно сделать ярлыки для некоторых часто используемых функций (см. таблицу ниже). Путь до javacpl.exe нужно указать реально существующий (в ту папку, куда вы копировали файлы Java).
Ярлык
Командная строка ярлыка
About Java
"c:\Program Files\Java\jre1.5.0_11\bin\javacpl.exe" -tab about
1. Java Downloads site:www.oracle.com. 2. 140505jdk1.8.0.zip - полностью обработанная структура папок 32-битного JDK (*.pack уже распакованы, осталось папку из архива положить в c:\Program Files\Java\). 3. 160228jdk-8u73.zip - полностью обработанная структура папок 64-битного JDK (*.pack уже распакованы, осталось папку из архива положить в c:\Program Files\Java\).
Странно, но 7z показывает содержимое: .data .rdata .reloc .rsrc .text CERTIFICATE
причем без разницы, какой версии java - хоть jre-8u5-windows-i586.exe хоть jre-8u91-windows-i586.exe. У файла jdk-8u101-windows-i586.exe другое содержимое: jaureg jusched jucheck
Как отсюда вытащить tools.zip, понятия не имею.
У меня было также, потом я скачал ту версию, на котором он показывает и все заработало.
Большое спасибо за статью и за распакованную папку(структуру. Самому не удалось, выходит какая то билиберда с файлами "string.txt". По предложению одного из комментаторов сделал batник.
Скачал готовый zip-архив 32 бит и поставил в C:Program FilesJavajdk1.8.0 дальше я создал JAVA_HOME и внес туда C:Program FilesJavajdk1.8.0. После этого в Path поставил %JAVA_HOME%bin, после этого пошли проблемы: в финдере не нашло никаких патчей. Забил на это. Захожу в cmd и пишу java -version и после этого вижу сообщение: "java" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
microsin: неправильно прописали путь в переменной окружения %PATH%.
Получилось так, windows 10, 64 бита: 1) добавил в системных переменных JAVA_HOME=C:Program FilesJavajdk1.7.0_80 2) добавил в PATH %JAVA_HOME%bin 3) И тут ВНИМАНИЕ! Заработало после того, как удалил в C:Windowssystem32 исполняемые файлы java.exe, javaw.exe и javaws.exe.
Странно, но 7z показывает содержимое: .data .rdata .reloc .rsrc .text CERTIFICATE
причем без разницы, какой версии java - хоть jre-8u5-windows-i586.exe хоть jre-8u91-windows-i586.exe. У файла jdk-8u101-windows-i586.exe другое содержимое: jaureg jusched jucheck
microsin у меня не получается сделать, пробовал твою готовую закинуть, но это оказалось 32 битная не подходит, пожалуйста, можешь сделать точно такую же на 64 битную винду??
microsin: сегодня не получится, дома у меня 32-битная машинка. Разве что завтра, 64-битный JDK у меня на работе должен стоять. Кстати: а что не так с 32-битной версией JDK? Обычно 32-битные приложения нормально должны работать на 64-битной машине.
Если не хотите ждать, советую временно развернуть виртуальную машину (например на основе VirtualBox) и на неё накатить JDK, который нужен.
Спасибо за статью. Сейчас пытаюсь подружить JAVA с Windows 10 (64bit). Установщик с последней версией JAVA пишет, что все хорошо встало. Но файл конфигурации javacpl.exe не запускается, и думается все это чудо не работает. Пробовал JAVA для 32 и для 64 систем - результат одинаковый. Писать путь тоже пробовал. Подскажите куда копать?
microsin: не знаю, к сожалению, что посоветовать, кроме как проверить еще раз разрешения безопасности, и обратиться с вопросом к разработчикам Java.
Такая проблема: установила Android Studio последнюю версию, jdk1.7.0_79 на Windows XP SP3-32. JAVA_HOME прописала. При запуске выдает: Failed to create JVM ... На Eclipse все работало. Искать старую версию studio?
microsin: скорее всего сама среда Android Studio тут ни при чем. У Вас не запускается среда выполнения Java, т. е. либо нужная JVM неправильно установлена, либо не прописаны пути поиска исполняемых файлов JVM (не настроена переменная окружения %Path%), либо не добавлены специфические для Android Studio переменные окружения. Прогуглите Вашу ошибку, наверняка быстро найдете решение.
Спасибо за статью, все получилось, но с напильником. Добавьте в статье, может пригодиться кому. В пункте 7 я создал батник, в него забил строчки на подобии таких "%JAVA_HOME%\bin\unpack200" -r "%JAVA_HOME%\lib\tools.pack" "%JAVA_HOME%\lib\tools.jar"
Комментарии
У меня было также, потом я скачал ту версию, на котором он показывает и все заработало.
после этого пошли проблемы: в финдере не нашло никаких патчей. Забил на это. Захожу в cmd и пишу java -version и после этого вижу сообщение: "java" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
microsin: неправильно прописали путь в переменной окружения %PATH%.
1) добавил в системных переменных JAVA_HOME=C:Program FilesJavajdk1.7.0_80
2) добавил в PATH %JAVA_HOME%bin
3) И тут ВНИМАНИЕ! Заработало после того, как удалил в C:Windowssystem 32 исполняемые файлы java.exe, javaw.exe и javaws.exe.
.data
.rdata
.reloc
.rsrc
.text
CERTIFICATE
причем без разницы, какой версии java - хоть jre-8u5-windows-i586.exe
хоть jre-8u91-windows-i586.exe. У файла jdk-8u101-windows-i586.exe
другое содержимое:
jaureg
jusched
jucheck
Как отсюда вытащить tools.zip, понятия не имею.
microsin: сегодня не получится, дома у меня 32-битная машинка. Разве что завтра, 64-битный JDK у меня на работе должен стоять. Кстати: а что не так с 32-битной версией JDK? Обычно 32-битные приложения нормально должны работать на 64-битной машине.
Если не хотите ждать, советую временно развернуть виртуальную машину (например на основе VirtualBox) и на неё накатить JDK, который нужен.
Установщик с последней версией JAVA пишет, что все хорошо встало. Но файл конфигурации javacpl.exe не запускается, и думается все это чудо не работает. Пробовал JAVA для 32 и для 64 систем - результат одинаковый. Писать путь тоже пробовал. Подскажите куда копать?
microsin: не знаю, к сожалению, что посоветовать, кроме как проверить еще раз разрешения безопасности, и обратиться с вопросом к разработчикам Java.
microsin: скорее всего сама среда Android Studio тут ни при чем. У Вас не запускается среда выполнения Java, т. е. либо нужная JVM неправильно установлена, либо не прописаны пути поиска исполняемых файлов JVM (не настроена переменная окружения %Path%), либо не добавлены специфические для Android Studio переменные окружения. Прогуглите Вашу ошибку, наверняка быстро найдете решение.
Добавьте в статье, может пригодиться кому.
В пункте 7 я создал батник, в него забил строчки на подобии таких
"%JAVA_HOME%\bin\unpack200" -r "%JAVA_HOME%\lib\tools.pack" "%JAVA_HOME%\lib\tools.jar"
"%JAVA_HOME%\bin\unpack200" -r "%JAVA_HOME%\jre\lib\ext\jf xrt.pack" "%JAVA_HOME%\jre\lib\ext\jf xrt.jar"
"%JAVA_HOME%\bin\unpack200" -r "%JAVA_HOME%\jre\lib\ext\lo caledata.pack" "%JAVA_HOME%\jre\lib\ext\lo caledata.jar"
Тогда все распаковалось, т.е. нужно в каждой строке при обращение к архиватору unpack200 писать точный адрес расположения файла.
RSS лента комментариев этой записи