繁体   English   中英

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

[英]installing JDK8 on Windows XP - advapi32.dll error

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

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

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

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

  2. 使用unpack200的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% ,你就可以了。

注意:您可能不应该只是在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

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

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

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

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

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

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

在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM