instalar JDK8 en Windows XP – error advapi32.dll

Descargué la versión b121 de JDK8 y al intentar instalar recibo el siguiente error:

el punto de entrada del procedimiento RegDeleteKeyExA no se pudo ubicar en la biblioteca de vínculos dynamics ADVAPI32.dll

El sistema operativo es Windows XP, Versión 2002 Service Pack 3, 32 bits.

Esto sucede porque Oracle dejó de admitir Windows XP (que no tiene RegDeleteKeyExA utilizado por el instalador en su ADVAPI32.DLL por cierto) como se describe en http://mail.openjdk.java.net/pipermail/openjfx-dev/ 2013-julio / 009005.html . Sin embargo, mientras que el soporte oficial para XP ha finalizado, los binarios de Java siguen siendo (a partir de Java 8u20 EA b05 al menos) compatibles con XP: solo el instalador no es …

Por eso, la solución es bastante fácil:

  1. obtener 7-zip (o cualquier otro archivador de calidad), descomprimir el .exe de distribución manualmente, tiene un archivo .zip dentro de él ( tools.zip ), extraerlo también,

  2. utilice unpack200 de JDK8 para descomprimir todos los archivos .pack en archivos .jar (los desempaques anteriores no funcionarán correctamente); JAVA_HOME variable de entorno JAVA_HOME debe establecerse en la raíz de descompresión de Java, por ejemplo, “C: \ Archivos de progtwig \ Java \ jdk8”; puede especificarla implícitamente, por ejemplo

     SET JAVA_HOME=C:\Program Files\Java\jdk8 
    • Desempaquete todos los archivos con un solo comando (en archivo por lotes):

       FOR /R %%f IN (*.pack) DO "%JAVA_HOME%\bin\unpack200.exe" -r -v "%%f" "%%~pf%%~nf.jar" 
    • Desempaquete todos los archivos con un solo comando (línea de comando desde la raíz JRE):

       FOR /R %f IN (*.pack) DO "bin\unpack200.exe" -r -v "%f" "%~pf%~nf.jar" 
    • Descomprima al ubicar manualmente los archivos y desempaquetarlos uno a uno:

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

    donde packname es, por ejemplo, rt

  3. señale la herramienta que desea utilizar (por ejemplo, Netbeans) al %JAVA_HOME% y %JAVA_HOME% listo para comenzar.

Nota: es probable que no deba hacer esto solo para usar Java 8 en su navegador web o por cualquier motivo similar (me viene a la mente instalar JRE 8); los fallos de seguridad en las primeras actualizaciones de los principales lanzamientos de la versión de Java son (como yo) legendarios , y además de eso, no hay soporte real para XP ni Java 8 en XP solo empeora las cosas. Sin mencionar que generalmente no necesita Java en su navegador (consulte, por ejemplo, http://nakedsecurity.sophos.com/2013/01/15/disable-java-browsers-homeland-security/ – el tema ya está cubierto en muchos páginas, solo Google si necesita más información). En cualquier caso, AFAIK lo único que se requiere para aplicar este procedimiento a JRE es cambiar algunas de las rutas especificadas anteriormente de \ bin \ a \ lib \ (la ubicación del archivo en el árbol del directorio del instalador es un poco diferente) – sin embargo , recomiendo encarecidamente en contra de hacerlo

Vea también: ¿Cómo puedo obtener el último JRE / JDK como un archivo zip en lugar de un instalador EXE o MSI? , JRE 1.7 devuelve: java / lang / NoClassDefFoundError: java / lang / Object

También hay una solución alternativa para aquellos que no tienen miedo de usar editores hexadecimales (por ejemplo, XVI32) [gracias a Trevor por esto]: en el instalador 1 no jdk-8uXX-windows-i586.exe ( jdk-8uXX-windows-i586.exe en el caso de JDK) simplemente reemplace todas las ocurrencias de RegDeleteKeyExA (el nombre de API que se encuentra en “nuevo” ADVAPI32.DLL ) con RegDeleteKeyA (nombre de API heredado), seguido de dos hex ’00’s (para preservar los límites de relleno / segmentación). El instalador se quejará de la versión de Windows no compatible, pero funcionará de todos modos.

Como referencia, las cadenas hexadecimales sin procesar serán:

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

Reemplazado con

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

Nota: este procedimiento se aplica tanto al paquete fuera de línea (independiente) como al en línea (descarga).

1: algunas versiones más nuevas del instalador están empaquetadas con UPX ; primero deberá descomprimirlas, de lo contrario, simplemente no podrá encontrar la cadena hexagonal requerida

Oracle anunció una solución para el error de instalación de Windows XP


Estoy agregando esta respuesta ya que Oracle decidió arreglar la instalación de Windows XP. A partir del lanzamiento de JRE 8u25 el 15/10/2014 se solucionó el error que impedía la instalación de Windows XP.

Sin embargo, esto no significa que Oracle siga siendo compatible con Windows XP. No garantizan que las versiones actuales y futuras de JRE8 sean compatibles con Windows XP. Parece que es una carrera en su propio tipo de riesgo.

Vea la publicación del blog de Oracle aquí.

Puede obtener el JRE 8u25 (o el último) directamente desde el sitio de descargas de Oracle.

Con JRE 8 en XP hay otra forma: usar MSI para implementar el paquete.

  • Instale JRE 8 x86 en una PC con sistema operativo compatible
  • Copie c: \ Users [USER] \ AppData \ LocalLow \ Sun \ Java \ jre1.8.0 \ jre1.8.0.msi y Data1.cab a XP PC y ejecute jre1.8.0.msi

o (manera silenciosa, utilizable en archivos por lotes, etc.)

 for %%I in ("*.msi") do if exist "%%I" msiexec.exe /i %%I /qn EULA=0 SKIPLICENSE=1 PROG=0 ENDDIALOG=0