簡體   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