我下载了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位。
答案 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兼容 - 只有安装程序不是......
因此,解决方案实际上非常简单:
获取7-Zip(或任何其他良好的解包器),手动解压缩.exe文件包,其中包含一个.zip文件(tools.zip
),也提取它,
使用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
将您想要使用的工具(例如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\
(安装程序目录树中的文件位置略有不同) - 但我强烈建议不要这样做。
另请参阅: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安装。截至2014年10月15日的JRE 8u25版本,安装程序的代码已更改,因此可以再次在Windows XP上安装。
但是,这并不意味着Oracle继续支持Windows XP。他们不保证JRE8的当前和未来版本与Windows XP兼容。它看起来像是一个冒风险的事情。
您可以从Oracle下载站点获得latest JRE8权限。
答案 3 :(得分:6)
在XP上安装JRE 8还有另一种方法 - 使用MSI部署软件包。
或(无声方式,可在批处理文件等中使用。)
for %%I in ("*.msi") do if exist "%%I" msiexec.exe /i %%I /qn EULA=0 SKIPLICENSE=1 PROG=0 ENDDIALOG=0