[英]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兼容 - 只有安裝程序不...
因此,解決方案實際上非常簡單:
得到7-Zip(或任何其他好的解包器),手動解壓縮.exe包,它里面有一個.zip文件( tools.zip
),也提取它,
使用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
將你想要使用的工具(例如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打包 - 您需要先解壓縮它們,否則您將無法找到所需的十六進制字符串
Oracle已決定修復Windows XP安裝。 截至2014年10月15日的JRE 8u25版本,安裝程序的代碼已更改,因此可以再次在Windows XP上安裝。
但是,這並不意味着Oracle將繼續支持Windows XP。 他們不保證JRE8的當前和未來版本與Windows XP兼容。 看起來這是一個冒風險的事情。
請在此處查看Oracle博客文章。
您可以直接從Oracle下載站點獲取最新的JRE8 。
在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.