60 votes

installation de JDK8 sur Windows XP - erreur advapi32.dll

J'ai téléchargé JDK8 build b121 et en essayant d'installer j'obtiens l'erreur suivante :

the procedure entry point RegDeleteKeyExA could not be located in the dynamic link library ADVAPI32.dll

Le système d'exploitation est Windows XP, version 2002 Service Pack 3, 32 bits.

0 votes

Je ne pense pas que Java 8 supporte XP.

0 votes

@assylias est-ce bien le cas ? existe-t-il un document le spécifiant ?

0 votes

J'ai essayé de l'installer sur un ordinateur XP il y a quelques mois et je me souviens avoir reçu un avertissement (l'installation a tout de même eu lieu...).

76voto

vaxquis Points 2122

Cela se produit parce qu'Oracle a abandonné la prise en charge de Windows XP (qui ne dispose pas de RegDeleteKeyExA utilisé par le programme d'installation dans son ADVAPI32.DLL d'ailleurs) comme décrit dans http://mail.openjdk.java.net/pipermail/openjfx-dev/2013-July/009005.html . Pourtant, bien que le support officiel de XP soit terminé, les binaires Java sont toujours (à partir de Java 8u20 EA b05 au moins) compatibles avec XP - seul l'installateur ne l'est pas...

Pour cette raison, la solution est en fait assez simple :

  1. prenez 7-Zip (ou tout autre bon décompresseur), décompressez manuellement le fichier .exe de la distribution, il contient un fichier .zip ( tools.zip ), l'extraire aussi,

  2. utilice unpack200 à partir du JDK8 pour décompresser tous les fichiers .pack en fichiers .jar (les décompressions plus anciennes ne fonctionneront pas correctement) ; JAVA_HOME doit être définie comme votre racine de décompression Java, par exemple " C:\Program Fichiers \Java\jdk8 " - vous pouvez le spécifier implicitement par exemple

    SET JAVA_HOME=C:\Program Files\Java\jdk8
    • Décompressez tous les fichiers avec une seule commande (dans un 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 la racine de JRE) :

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

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

    donde packname est par exemple rt

  3. dirigez l'outil que vous voulez utiliser (par exemple Netbeans) vers l'adresse suivante %JAVA_HOME% et vous êtes prêt à partir.

Note : vous ne devriez probablement pas faire cela juste pour utiliser Java 8 dans votre navigateur web ou pour toute autre raison similaire (l'installation de JRE 8 me vient à l'esprit) ; les failles de sécurité dans les premières mises à jour des versions majeures de Java sont (pensez à moi) légendaire Et si l'on ajoute à cela l'absence de support réel pour XP ou Java 8 sur XP, cela ne fait qu'empirer les choses. Sans compter que vous avez généralement Ne le fais pas. vous avez besoin de Java dans votre navigateur (voir par ex. 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 le chercher sur Google si vous avez besoin de plus d'informations). Dans tous les cas, AFAIK la seule chose requise pour appliquer cette procédure à JRE est de changer certains des chemins spécifiés ci-dessus de \bin\ à \lib\ (le placement des fichiers dans l'arborescence du répertoire de l'installateur est un peu différent). fortement déconseille de le faire.

Voir aussi : Comment puis-je obtenir la dernière version de JRE / JDK sous forme de fichier zip plutôt que sous forme d'installateur EXE ou MSI ? , JRE 1.7 - version de java - renvoie : java/lang/NoClassDefFoundError : java/lang/Object

0 votes

J'ai foiré la ligne de commande upack200 et j'ai renommé tous les fichiers .pack.jar , utiliser FOR /R %%f IN (*.pack) DO "C:\Program Files\Java\jre8\bin\unpack200.exe" -r -v "%%f" "%%~pf%%~nf.jar" J'essaie à nouveau maintenant.

0 votes

Tout fonctionne, merci. J'ai également téléchargé la jre et fait la même chose en remplaçant mon répertoire de programme jre8. Vous pouvez probablement utiliser le répertoire jre dans le sdk. Il y a quelques entrées de registre avec l'ancien numéro de version mais ce n'est probablement pas un problème. java -version renvoie la version correcte.

0 votes

C'est étrange car je ne peux pas localiser src.zip à partir du jdk et donc eclipse ne peut pas attacher le code source.

23voto

vaxquis Points 2122

Il existe également une autre solution pour ceux qui n'ont pas peur d'utiliser des éditeurs hexadécimaux (par exemple XVI32) [merci à Trevor pour cela] : dans le non emballé 1 exécutable du programme d'installation ( jdk-8uXX-windows-i586.exe dans le cas de JDK) remplace simplement toutes les occurrences de RegDeleteKeyExA (le nom de l'API trouvé dans "new") ADVAPI32.DLL ) avec RegDeleteKeyA (ancien nom de l'API), suivi de deux '00' hexadécimaux (pour préserver les limites de padding/segmentation). Le programme d'installation se plaindra d'une version de Windows non prise en charge, mais il fonctionnera néanmoins.

Pour référence, les chaînes hexagonales brutes 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

Remarque : cette procédure s'applique à la fois au paquet hors ligne (autonome) et en ligne (téléchargeur).

1 : certaines versions plus récentes de l'installateur sont équipées de UPX - vous devez d'abord les décompresser, sinon vous ne serez pas en mesure de trouver la chaîne hexagonale requise.

3 votes

Je dois admettre que j'ai essayé cette solution plutôt que la réponse acceptée, même si j'avais des doutes, simplement parce que c'est beaucoup plus facile à faire, alors pourquoi ne pas l'essayer ? -- Cela fonctionne parfaitement. Merci !

2 votes

Bonjour, c'est très facile. Cela a marché pour moi aussi. Dans XVI32, trouvez 52 65 67 44 65 6C 65 74 65 4B 65 79 45 78 41 en hexadécimal et remplacez par 52 65 67 44 65 6C 65 74 65 4B 65 79 41 00 00. Seulement deux occurrences à remplacer dans ce fichier.

0 votes

J'adore cette solution.

18voto

kevingreen Points 685

Oracle a annoncé un correctif pour l'erreur d'installation de Windows XP

Oracle a décidé de corriger l'installation de Windows XP. A partir de la version JRE 8u25 du 15/10/2014, le code de l'installateur a été modifié afin que l'installation sur Windows XP soit à nouveau possible.

Toutefois, cela ne signifie pas qu'Oracle continue à prendre en charge Windows XP. L'entreprise ne garantit pas la compatibilité des versions actuelles et futures de JRE8 avec Windows XP. Il semble que c'est une sorte d'exécution à vos propres risques.

Voir le Article du blog d'Oracle ici.

Vous pouvez obtenir le dernier JRE8 directement sur le site de téléchargement d'Oracle.

6voto

user3467974 Points 61

Avec JRE 8 sous XP, il existe une autre solution : utiliser MSI pour déployer le paquet.

  • Installer JRE 8 x86 sur un PC avec un système d'exploitation pris en charge
  • Copie c : \Users [USER] \AppData\LocalLow\Sun\Java\jre1.8.0\jre1.8.0.msi et Data1.cab sur un PC XP et exécutez jre1.8.0.msi

ou (mode silencieux, utilisable dans un fichier batch etc.)

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

0 votes

Étant donné qu'il faut installer le JRE sur un autre système conforme aux spécifications (sans compter qu'il faut copier les fichiers de ce système), je considère cette méthode comme une preuve de concept (intéressante, pour ainsi dire) plutôt que comme une solution fonctionnelle et utilisable.

0 votes

@vaxquis, je suis sûr que l'on peut utiliser 7z ou similaire pour extraire le fichier jre1.8.0.msi directement à partir du setup.exe.

0 votes

@SebastianGodelet premièrement, il n'y a pas de setup.exe, seulement jdk-8uXX-Windows-i586.exe, deuxièmement, il ne contient que tools.zip, qui, à son tour, ne contient ni jre1.8.0.msi ni data1.cab ; si l'installation était possible par simple extraction de setup.exe, pourquoi pensez-vous que j'aurais inventé toute la solution ? Au lieu d'"être sûr" essayez de le faire vous-même pour voir si c'est possible ; si vous parvenez à le faire à votre façon, postez-le ici comme solution.

-2voto

Rob Points 94

La méthode "à l'épreuve du temps" pour installer Java 8 sur Win XP

  1. Obtenez un éditeur hexagonal. Le programme appelé Hxd fonctionnera pour cela.
  2. Téléchargez le programme d'installation en ligne Oracle Java 8 appelé jre-8u11-windows-i586-iftw.exe (c'est le plus petit des deux exécutables de Windows. Son exécution télécharge à chaque fois la dernière version de Java).

La version la plus récente de Java peut être obtenue à partir de cette page, il n'y a pas de lien direct.

Environnement d'exécution Java SE 8 Téléchargements

http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

  1. Abrir jre-8u11-windows-i586-iftw.exe (ou un exécutable plus récent) en utilisant Hxd

  2. Rechercher et remplacer (en mode hexadécimal) les deux occurrences de RegDeleteKeyExA et les remplacer par RegDeleteKeyA (le nom de l'ancienne API). N'oubliez pas d'utiliser le mode hexadécimal :

Remplacer

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

avec

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

  1. Sauvegarder le fichier renommé comme jre-8u11-windows-i586-iftw__Patched.exe

  2. Exécutez le programme corrigé, si vous l'avez corrigé correctement, il se plaindra que votre système d'exploitation est trop vieux.

  3. Fermez la fenêtre contextuelle et installez Java 8. Le programme d'installation en ligne téléchargera la dernière version de Java depuis Oracle chaque fois que vous l'exécuterez.

  4. Cliquez sur le bouton [Démarrer] de votre bureau, cliquez à droite sur "Poste de travail" et cliquez à gauche sur "Propriétés".

  5. Cliquez sur l'onglet "Avancé", puis sur le bouton "Variables d'environnement". Vous n'avez besoin d'aucun élément contenant les lettres "java" dans votre fichier de configuration. PATH (une copie de java est installée dans C:\WINDOWS\system32 qui est dans votre PATH ). Nettoyez toutes les ordures de votre PATH y compris les références à java (mais, bien évidemment, ne supprimez pas les C:\WINDOWS\system32 de votre variable PATH).

Définissez la variable d'environnement nommée JAVA_HOME (créez-la si nécessaire) comme suit

JAVA_HOME=C:\Program Files\Java\jre8
  1. Tout devrait maintenant être installé correctement. Vous devrez peut-être redémarrer, mais vérifiez l'étape 11 avant de le faire.

  2. Si Java ne démarre pas (testez avec "java -version"), recherchez les fichiers *.pack comme ceci :

cd "c : \Program Fichiers \java\ "

dir /s *.pack

Vous pouvez les déballer par l'une de ces deux méthodes :

  • Décompressez tous les fichiers avec une seule commande (dans un 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 la racine de JRE) :

FOR /R %f IN (*.pack) DO "%JAVA_HOME%\bin\unpack200.exe" -r -v "%f" "%~pf%~nf.jar"

À l'avenir, lorsque vous voudrez mettre à jour Java, il vous suffira de relancer votre programme corrigé pour qu'il récupère la dernière copie de Java directement auprès d'Oracle et l'installe. Il n'est pas nécessaire d'appliquer un nouveau correctif ou de définir des variables d'environnement (jusqu'à ce que vous dépassiez la version 8, ou que vous souhaitiez utiliser le JDK au lieu du JRE).

Il s'agit d'une solution "à réparer une fois, cela devrait fonctionner pendant un certain temps".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X