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

时间:2014-01-07 06:47:29

标签: java dll java-8 windows-xp

我下载了JDK8 build b121,在尝试安装时遇到以下错误:

  

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

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

4 个答案:

答案 0 :(得分:76)

这是因为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. 使用JDK8中的unpack200将所有.pack文件解压缩到.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根目录的命令行):

      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%并且您很高兴。

  4. 注意:您可能不应该只是在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\(安装程序目录树中的文件位置略有不同) - 但我强烈建议不要这样做。

    另请参阅:How can I get the latest JRE / JDK as a zip file rather than EXE or MSI installer?JRE 1.7 - java version - returns: java/lang/NoClassDefFoundError: java/lang/Object

答案 1 :(得分:21)

对于那些不怕使用十六进制编辑器(例如XVI32)的人来说,还有另一种解决方案[感谢 Trevor ]:在 unpacked 1 安装程序可执行文件(在JDK的情况下为jdk-8uXX-windows-i586.exe)只需替换所有出现的RegDeleteKeyExA(在&#34中找到的API名称;新" {{1 {}包含ADVAPI32.DLL(传统API名称),后跟两个十六进制'(以保留填充/分段边界)。安装程序会抱怨Windows版本不受支持,但仍可以使用。

作为参考,原始的十六进制字符串将是:

RegDeleteKeyA

替换为

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

注意:此过程适用于离线(独立)和联机(下载)程序包。

1:某些较新的安装程序版本包含UPX - 您需要先解压缩它们,否则您只是无法找到所需的十六进制字符串

答案 2 :(得分:17)

Oracle已宣布修复Windows XP安装错误

Oracle决定修复Windows XP安装。截至2014年10月15日的JRE 8u25版本,安装程序的代码已更改,因此可以再次在Windows XP上安装。

但是,这并不意味着Oracle继续支持Windows XP。他们不保证JRE8的当前和未来版本与Windows XP兼容。它看起来像是一个冒风险的事情。

请参阅Oracle blog post here.

您可以从Oracle下载站点获得latest JRE8权限。

答案 3 :(得分:6)

在XP上安装JRE 8还有另一种方法 - 使用MSI部署软件包。

  • 在支持OS的PC上安装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