在Windows XP上安装JDK8-advapi32.dll错误



我下载了JDK8内部版本b121,在尝试安装时遇到以下错误:

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

操作系统是Windows XP,版本2002 Service Pack 3,32位。

发生这种情况是因为Oracle放弃了对Windows XP的支持(顺便说一句,安装程序在其ADVAPI32.DLL中没有使用RegDeleteKeyExA),如中所述http://mail.openjdk.java.net/pipermail/openjfx-dev/2013-July/009005.html.然而,尽管对XP的官方支持已经结束,但Java二进制文件仍然(至少从Java 8u20 EA b05开始)与XP兼容——只有安装程序不兼容。。。

正因为如此,解决方案实际上相当简单:

  1. 获取7-Zip(或任何其他好的解包器),手动解包distribution.exe,它里面有一个.Zip文件(tools.zip),也提取它,

  2. 使用JDK8中的unpack200将所有的.pack文件解压缩为.jar文件(旧的解压缩无法正常工作);JAVA_HOME环境变量应设置为Java解压缩根,例如"C:\Program Files\Java\jdk8"-您可以通过例如隐式指定它

    SET JAVA_HOME=C:Program FilesJavajdk8
    
    • 用一个命令(在批处理文件中)打开所有文件:

      FOR /R %%f IN (*.pack) DO "%JAVA_HOME%binunpack200.exe" -r -v "%%f" "%%~pf%%~nf.jar"
      
    • 使用单个命令(JRE根目录中的命令行)解压缩所有文件:

      FOR /R %f IN (*.pack) DO "binunpack200.exe" -r -v "%f" "%~pf%~nf.jar"
      
    • 通过手动定位文件并逐一开箱进行开箱:

      %JAVA_HOME%binunpack200 -r packname.pack packname.jar
      

    其中packname是例如rt

  3. 将要使用的工具(例如Netbeans)指向%JAVA_HOME%,就可以使用了。

注意:您可能不应该仅仅为了在web浏览器中使用Java 8或出于任何类似的原因(想到安装JRE 8)而这样做;主要Java版本早期更新中的安全缺陷是(请注意)传奇性的,再加上XP上既不支持XP,也不支持Java 8,只会让情况变得更糟。更不用说您通常浏览器中不需要Java(请参见例如。http://nakedsecurity.sophos.com/2013/01/15/disable-java-browsers-homeland-security/-这个话题已经在很多页面上介绍过了,如果你需要更多信息,只需谷歌即可)。在任何情况下,AFAIK将此过程应用于JRE所需的唯一操作就是将上面指定的一些路径从bin更改为lib(安装程序目录树中的文件位置有点不同),但我强烈建议不要这样做。

另请参阅:如何将最新的JRE/JDK作为zip文件而不是EXE或MSI安装程序?,JRE 1.7-java版本-返回:java/lang/NoClassDefFoundError:java/lang/Object

对于那些不怕使用十六进制编辑器(如XVI32)的人来说,还有一种替代解决方案[感谢Trevor]:在未打包的1安装程序可执行文件(对于JDK,为jdk-8uXX-windows-i586.exe)中,只需将所有出现的RegDeleteKeyExA("新"ADVAPI32.DLL中API的名称)替换为RegDeleteKeyA(传统API名称),然后是两个十六进制‘00(以保留填充/分段边界)。安装程序会抱怨不支持的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的安装。自2014年10月15日JRE 8u25发布以来,安装程序的代码已经更改,因此可以再次在Windows XP上安装。

然而,这并不意味着Oracle将继续支持Windows XP。他们不能保证当前和未来版本的JRE8与WindowsXP兼容。看起来这是一种自担风险的跑步方式。

请参阅此处的Oracle博客文章。

您可以从Oracle下载网站上获得最新的JRE8。

XP上的JRE 8还有另一种方法-使用MSI部署包。

  • 在支持操作系统的电脑上安装JRE 8 x86
  • 复制c: \Users[USER]\AppData\LocalLow\Sun\Java\jre1.8.0\jre1.8.0.msi和Data1.cab到XP PC并运行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

最新更新