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


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

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

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

4 58

4 ответа:

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

из-за этого, решение на самом деле очень легко:

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

  2. использовать unpack200 из JDK8 распаковать все .упакуйте файлы .jar-файлы (старые распаковки не будут работать должным образом);JAVA_HOME переменная окружения должна быть установлена в корень распаковки Java, например "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 root):

      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\ до \lib\ (размещение файла в дереве каталогов установщика немного отличается) - но я сильно советую делать оно.

Читайте также: как я могу получить последнюю версию JRE / JDK в виде zip-файла, а не установщика EXE или MSI?,среда JRE 1.7 возвращает: Ява/Ланг/ошибке типа noclassdeffounderror: Java, с/Ланг/объекта

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

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

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[пользователь]\AppData\LocalLow\Sun\Java\jre1.8.0\jre1.8.0.msi и Data1.кэб на ПК 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