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

yas*_*hhy 59 java dll windows-xp java-8

我下载了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位.

vax*_*uis 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. 使用unpack200JDK8将所有.pack文件解压缩到.jar文件(较旧的解包不能正常工作); JAVA_HOME环境变量应设置为Java解包根,例如"C:\ Program Files\Java\jdk8" - 您可以通过例如隐式指定它

    SET JAVA_HOME=C:\Program Files\Java\jdk8
    
    Run Code Online (Sandbox Code Playgroud)

    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 version - 返回:java/lang/NoClassDefFoundError:java/lang/Object


vax*_*uis 21

对于那些不怕使用十六进制编辑器的人来说还有一个替代解决方案(例如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
Run Code Online (Sandbox Code Playgroud)

换成了

52 65 67 44 65 6C 65 74 65 4B 65 79 41 00 00
Run Code Online (Sandbox Code Playgroud)

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

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

  • 我必须承认,即使我有疑虑,我试过这个而不是接受的答案,只是因为它更容易做到,所以为什么不试试呢? - 完全有效.谢谢! (3认同)
  • 嗨!这很容易.它对我也有用.在XVI32中找到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.该文件中只有两次更换. (2认同)

kev*_*een 17

甲骨文宣布修复Windows XP安装错误

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

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

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

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


小智 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
Run Code Online (Sandbox Code Playgroud)