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

 wjwakx5792 发布于 2023-02-06 10:06

我下载了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 个回答
  • 甲骨文宣布修复Windows XP安装错误

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

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

    请在此处查看Oracle博客文章.

    您可以直接从Oracle下载站点获取最新的JRE8.

    2023-02-06 10:07 回答
  • 对于那些不怕使用十六进制编辑器的人来说还有一个替代解决方案(例如XVI32)[感谢Trevor ]:在unpacked 1安装程序可执行文件中(jdk-8uXX-windows-i586.exe如果是JDK)只需替换所有出现的RegDeleteKeyExA(名称为ADVAPI32.DLL使用RegDeleteKeyA(传统API名称)在"new"中找到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打包- 您需要先解压缩它们,否则您将无法找到所需的十六进制字符串

    2023-02-06 10:07 回答
  • 发生这种情况是因为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兼容 - 只有安装程序不...

    因此,解决方案实际上非常简单:

      获取7-Zip(或任何其他良好的解包器),手动解压缩.exe文件包,它内部有一个.zip文件(tools.zip),也提取它,

      使用unpack200JDK8将所有.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

      将你想要使用的工具(例如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 version - 返回:java/lang/NoClassDefFoundError:java/lang/Object

    2023-02-06 10:07 回答
  • 在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
    

    2023-02-06 10:07 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有