installation de JDK8 sur Windows XP-advapi32.erreur de dll

j'ai téléchargé JDK8 build B121 et en essayant d'installer je reçois l'erreur suivante:

le point d'entrée de la procédure RegDeleteKeyExA n'a pas pu être localisé dans la bibliothèque de liens dynamiques ADVAPI32.dll

le système d'exploitation est Windows XP, Version 2002 Service Pack 3, 32-bit.

58
demandé sur vaxquis 2014-01-07 10:47:29

4 réponses

cela se produit parce que Oracle a laissé tomber le support Pour Windows XP (qui n'a pas RegDeleteKeyExA utilisé par l'installateur dans son ADVAPI32.DLL soit dit en passant) comme décrit dans http://mail.openjdk.java.net/pipermail/openjfx-dev/2013-July/009005.html . Cependant, alors que le support officiel de XP est terminé, les binaires Java sont toujours compatibles XP (au moins depuis Java 8u20 EA b05)-seul l'installateur ne l'est pas...

à cause de cela, la solution est en fait assez facile:

  1. bénéficiez de 7-zip (ou n'importe quel autre logiciel d'archivage), décompressez la distribution .exe manuellement, il y en a un .fichier zip à l'intérieur ( tools.zip ), extraire aussi,

  2. utiliser unpack200 de JDK8 pour tout déballer .pack de fichiers .les fichiers jar (âgés déballe ne fonctionnent pas correctement); JAVA_HOME variable d'environnement doit être réglé à votre Java décompresser racine, par exemple "C:\Program Files\Java\jdk8" - vous pouvez le spécifier implicitement par exemple

    SET JAVA_HOME=C:\Program Files\Java\jdk8
    
    • déballez tous les fichiers avec une seule commande (dans le fichier batch):

      FOR /R %%f IN (*.pack) DO "%JAVA_HOME%\bin\unpack200.exe" -r -v "%%f" "%%~pf%%~nf.jar"
      
    • décompressez tous les fichiers avec une seule commande (ligne de commande depuis JRE root):

      FOR /R %f IN (*.pack) DO "bin\unpack200.exe" -r -v "%f" "%~pf%~nf.jar"
      
    • déballer manuellement les fichiers et les déballer un par un:

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

    packname est par exemple rt

  3. pointez l'outil que vous voulez utiliser (par exemple Netbeans) sur le %JAVA_HOME% et vous êtes prêt à l'emploi.

Note: vous ne devriez probablement pas faire cela juste pour utiliser Java 8 dans votre navigateur web ou pour une raison similaire (installer JRE 8 vient à l'esprit); les failles de sécurité dans les premières mises à jour des versions majeures de version Java sont (mind me) légendaire , et ajoutant à cela qu'aucun support réel pour Ni XP ni Java 8 sur XP ne fait que les choses bien pire. Sans parler de vous habituellement ne pas besoin de Java dans votre navigateur (voir par exemple http://nakedsecurity.sophos.com/2013/01/15/disable-java-browsers-homeland-security / - le sujet est déjà couvert sur de nombreuses pages, il suffit de Google si vous avez besoin d'informations supplémentaires). Dans tous les cas, AFAIK la seule chose nécessaire pour appliquer ce la procédure à suivre pour JRE est de changer certains des chemins spécifiés ci - dessus de \bin\ à \lib\ (le placement de fichier dans l'arborescence des répertoires de l'installateur est un peu différent) - pourtant je fortement déconseille de le faire.

Voir aussi: Comment puis-je obtenir le dernier JRE / JDK comme fichier zip plutôt que EXE ou MSI installer? , JRE 1.7 returns: java / lang/Noclassdeffonderror: java/lang / Object

73
répondu vaxquis 2017-05-23 12:24:25

il y a aussi une solution alternative pour ceux qui n'ont pas peur d'utiliser des éditeurs hex (par ex. XVI32) [merci à Trevor pour ceci]: dans le non emballé 1 l'exécutable de l'installateur ( jdk-8uXX-windows-i586.exe dans le cas de JDK) remplace simplement toutes les occurrences de RegDeleteKeyExA (le nom de L'API trouvé dans" nouveau " ADVAPI32.DLL ) par RegDeleteKeyA (le nom de L'API héritée), suivi de deux hex '00's (pour préserver les limites de rembourrage/segmentation). L'installateur se plaindra de la version Windows non supportée, mais fonctionnera néanmoins.

pour référence, les cordes brutes hexadécimales seront:

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

remplacé par

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

Note: cette procédure s'applique à la fois aux paquets offline (standalone) et online (downloader).

1: Certaines nouvelles versions de l'installateur sont emballées avec UPX - vous auriez besoin de déballez-les d'abord, sinon vous ne pourrez pas trouver la chaîne de caractères hexadécimaux requise

20
répondu vaxquis 2015-01-30 17:47:32

Oracle a annoncé fixer Pour Windows XP erreur d'installation


j'ajoute cette réponse car Oracle a décidé de corriger L'installation de Windows XP. Depuis la version JRE 8u25 du 15/10/2014, le bug a été corrigé pour empêcher L'installation de Windows XP.

cependant, cela ne signifie pas Qu'Oracle continue à prendre en charge Windows XP. Ils ne font aucune garantie sur les versions actuelles et futures de JRE8 étant compatible avec Windows XP. On dirait que c'est une course à vos propres risques.

Voir la Oracle billet de blog ici.

vous pouvez obtenir le JRE 8u25 (ou le plus récent) directement sur le site de téléchargement D'Oracle.

16
répondu kevingreen 2015-02-12 19:53:00

avec JRE 8 sur XP il y a une autre façon - d'utiliser MSI pour déployer le paquet.

  • Installer le JRE 8 x86 sur un PC avec un OS soutenu
  • Copy c:\Users [USER]\AppData\LocalLow\Sun\Java\jre1.8.0\jre1.8.0.msi et Data1.taxi pour XP PC et exécuter jre1.8.0.msi

ou (silent way, utilisable dans le fichier de commandes etc..)

for %%I in ("*.msi") do if exist "%%I" msiexec.exe /i %%I /qn EULA=0 SKIPLICENSE=1 PROG=0 ENDDIALOG=0
6
répondu user3467974 2014-04-07 10:20:59