установка JDK8 на Windows XP – ошибка advapi32.dll

Я загрузил JDK8 build b121 и, пытаясь установить, я получаю следующую ошибку:

точка входа процедуры RegDeleteKeyExA не может быть расположена в динамической библиотеке ссылок ADVAPI32.dll

Операционная система – Windows XP, версия 2002 с пакетом обновления 3 (SP3), 32-разрядная.

Это происходит из-за того, что Oracle отказалась от поддержки Windows XP ( RegDeleteKeyExA него нет RegDeleteKeyExA используемого установщиком в ADVAPI32.DLL ), как описано в http://mail.openjdk.java.net/pipermail/openjfx-dev/ 2013-июль / 009005.html . Тем не менее, хотя официальная поддержка XP закончилась, двоичные файлы Java по-прежнему (по крайней мере, на Java 8u20 EA b05) XP-совместимы – только установщик не …

Из-за этого решение на самом деле довольно просто:

  1. получить 7-zip (или любой другой архиватор качества), распаковать дистрибутив .exe вручную, у него есть один ZIP-файл внутри него ( tools.zip ), извлечь его тоже,

  2. используйте unpack200 от JDK8, чтобы распаковать все файлы .pack в файлы .jar (старые распаковки не будут работать должным образом); Переменная среды JAVA_HOME должна быть установлена ​​в ваш Java-распаковщик root, например «C: \ Program Files \ Java \ jdk8» – вы можете указать это неявно, например

     SET JAVA_HOME=C:\Program Files\Java\jdk8 
    • Распакуйте все файлы с помощью одной команды (в пакетном файле):

       FOR /R %%f IN (*.pack) DO "%JAVA_HOME%\bin\unpack200.exe" -r -v "%%f" "%%~pf%%~nf.jar" 
    • Распакуйте все файлы с помощью одной команды (в командной строке из корня JRE):

       FOR /R %f IN (*.pack) DO "bin\unpack200.exe" -r -v "%f" "%~pf%~nf.jar" 
    • Распакуйте вручную, разместив файлы и распакуя их один за другим:

       %JAVA_HOME%\bin\unpack200 -r packname.pack packname.jar 

    где packname – это, например, rt

  3. укажите инструмент, который вы хотите использовать (например, Netbeans), на %JAVA_HOME% и вам хорошо идти.

Примечание: вы, вероятно, не должны этого делать, просто используйте Java 8 в своем веб-браузере или по любой другой причине (установка JRE 8 приходит на ум); недостатки безопасности в ранних версиях основных выпусков Java-версий (mind me) легендарны и, добавив, что никакой реальной поддержки ни XP, ни Java 8 на XP не только значительно ухудшают ситуацию. Не говоря уже о том, что вам, как правило , не нужна Java в вашем браузере (см., Например, http://nakedsecurity.sophos.com/2013/01/15/disable-java-browsers-homeland-security/ – эта тема уже рассмотрена на многих страниц, просто Google, если вам нужна дополнительная информация). В любом случае, AFAIK, единственное, что требуется для применения этой процедуры к JRE, – это изменить некоторые из указанных выше путей из \ bin \ to \ lib \ (расположение файлов в дереве каталогов установщика немного отличается), но я настоятельно рекомендую против этого.

См. Также: Как я могу получить последний JRE / JDK в виде zip-файла, а не EXE или MSI-установщик? , JRE 1.7 возвращает: java / lang / NoClassDefFoundError: java / lang / Object

Существует также альтернативное решение для тех, кто не боится использовать шестнадцатеричные редакторы (например, XVI32) [благодаря Trevor для этого]: в распакованном 1 исполняемом файле установщика ( jdk-8uXX-windows-i586.exe в случае JDK) просто замените все вхождения RegDeleteKeyExA (имя API, найденного в «новом» ADVAPI32.DLL ) с RegDeleteKeyA (устаревшее имя API), за которым следуют два hex ’00’s (чтобы сохранить границы заполнения / сегментации). Установщик будет жаловаться на неподдерживаемую версию Windows, но будет работать все же.

Для справки необработанные шестнадцатеричные строки будут:

 52 65 67 44 65 6C 65 74 65 4B 65 79 45 78 41 

заменены на

 52 65 67 44 65 6C 65 74 65 4B 65 79 41 00 00 

Примечание. Эта процедура применяется как к автономному (автономному), так и к интерактивному (загрузчику) пакетам.

1: некоторые новые версии установщика упакованы в UPX – вам сначала нужно распаковать их, иначе вы просто не сможете найти требуемую шестнадцатеричную строку

Oracle анонсировала исправление для установки Windows XP


Я добавляю этот ответ, так как Oracle решила исправить установку Windows XP. Что касается выпуска JRE 8u25 в 10/15/2014, исправлена ​​ошибка, которая предотвратила установку Windows XP.

Однако это не означает, что Oracle продолжает поддерживать Windows XP. Они не гарантируют, что текущие и будущие версии JRE8 совместимы с Windows XP. Похоже, что это бег на свой страх и риск.

Смотрите блог Oracle здесь.

Вы можете получить JRE 8u25 (или последний) прямо с сайта загрузки Oracle.

С JRE 8 на XP есть другой способ – использовать MSI для развертывания пакета.

  • Установите JRE 8 x86 на ПК с поддерживаемой ОС
  • Скопируйте c: \ Users [USER] \ AppData \ LocalLow \ Sun \ Java \ jre1.8.0 \ jre1.8.0.msi и Data1.cab на компьютер XP и запустите jre1.8.0.msi

или (тихий способ, можно использовать в пакетном файле и т. д.)

 for %%I in ("*.msi") do if exist "%%I" msiexec.exe /i %%I /qn EULA=0 SKIPLICENSE=1 PROG=0 ENDDIALOG=0 
  • Можно ли запустить Windows XP с USB-накопителя?
  • Ключ продукта Windows действителен, но не будет активирован
  • Как вернуть загрузчик Windows 8, а также отобразить как Windows XP, так и Windows 7?
  • Установите драйвер XP на Windows 7
  • Как получить доступ к веб-камере из VirtualBox?
  • Почему принтер HP 6L внезапно прекратил работу? Я не могу заставить его начать
  • Какой драйвер LAN следует использовать для Asus F5Z?
  • Как получить ftype & assoc для соответствия проводнику Windows?
  • Лучшее бесплатное программное обеспечение для пакетного преобразования jpg в png
  • Установка Windows XP и запуск с USB-накопителя
  • Кнопка мыши и счетчик клавиш для Windows
  • Давайте будем гением компьютера.