JDK8 安装程序在 Windows 10 上退出并显示 0xC0000005

CNi*_*ife 5 java windows-10

当我尝试将 JDK 从 8u162 升级到 8u172 时,发生了这种情况。我发现所有 8u162、8u171 和 8u172 安装程序都以 code 退出0xC0000005,但只有 JDK 8 才会出现这种情况。JDK 10.0.1 可以成功安装。

以下是 Visual Studio 的转储文件分析:

Dump Summary
------------
Dump File:  jdk-8u172-windows-x64.exe.10568.dmp : C:\Users\CNife\AppData\Local\CrashDumps\jdk-8u172-windows-x64.exe.10568.dmp
Last Write Time:    2018/4/21 21:54:54
Process Name:   jdk-8u172-windows-x64.exe : C:\Users\CNife\AppData\Local\Temp\jds301015.tmp\jdk-8u172-windows-x64.exe
Process Architecture:   x64
Exception Code: 0xC0000005
Exception Information:  The thread tried to read from or write to a virtual address for which it does not have the appropriate access.
Heap Information:   Not Present

System Information
------------------
OS Version: 10.0.16299
CLR Version(s): 

Modules
-------
Module Name Module Path Module Version
----------- ----------- --------------
jdk-8u172-windows-x64.exe   C:\Users\CNife\AppData\Local\Temp\jds301015.tmp\jdk-8u172-windows-x64.exe   8.0.1720.11
ntdll.dll   C:\Windows\System32\ntdll.dll   10.0.16299.334
kernel32.dll    C:\Windows\System32\kernel32.dll    10.0.16299.15
KERNELBASE.dll  C:\Windows\System32\KERNELBASE.dll  10.0.16299.371
apphelp.dll C:\Windows\System32\apphelp.dll 10.0.16299.98
ole32.dll   C:\Windows\System32\ole32.dll   10.0.16299.371
combase.dll C:\Windows\System32\combase.dll 10.0.16299.15
ucrtbase.dll    C:\Windows\System32\ucrtbase.dll    10.0.16299.248
rpcrt4.dll  C:\Windows\System32\rpcrt4.dll  10.0.16299.371
bcryptPrimitives.dll    C:\Windows\System32\bcryptPrimitives.dll    10.0.16299.98
gdi32.dll   C:\Windows\System32\gdi32.dll   10.0.16299.15
gdi32full.dll   C:\Windows\System32\gdi32full.dll   10.0.16299.98
msvcp_win.dll   C:\Windows\System32\msvcp_win.dll   10.0.16299.248
user32.dll  C:\Windows\System32\user32.dll  10.0.16299.125
win32u.dll  C:\Windows\System32\win32u.dll  10.0.16299.15
sechost.dll C:\Windows\System32\sechost.dll 10.0.16299.15
shell32.dll C:\Windows\System32\shell32.dll 10.0.16299.371
msvcrt.dll  C:\Windows\System32\msvcrt.dll  7.0.16299.125
cfgmgr32.dll    C:\Windows\System32\cfgmgr32.dll    10.0.16299.15
SHCore.dll  C:\Windows\System32\SHCore.dll  10.0.16299.15
windows.storage.dll C:\Windows\System32\windows.storage.dll 10.0.16299.371
advapi32.dll    C:\Windows\System32\advapi32.dll    10.0.16299.371
shlwapi.dll C:\Windows\System32\shlwapi.dll 10.0.16299.15
kernel.appcore.dll  C:\Windows\System32\kernel.appcore.dll  10.0.16299.15
powrprof.dll    C:\Windows\System32\powrprof.dll    10.0.16299.15
profapi.dll C:\Windows\System32\profapi.dll 10.0.16299.15
oleaut32.dll    C:\Windows\System32\oleaut32.dll    10.0.16299.15
crypt32.dll C:\Windows\System32\crypt32.dll 10.0.16299.15
msasn1.dll  C:\Windows\System32\msasn1.dll  10.0.16299.15
version.dll C:\Windows\System32\version.dll 10.0.16299.15
msi.dll C:\Windows\System32\msi.dll 5.0.16299.309
bcrypt.dll  C:\Windows\System32\bcrypt.dll  10.0.16299.125
imm32.dll   C:\Windows\System32\imm32.dll   10.0.16299.15
Run Code Online (Sandbox Code Playgroud)

我很高兴地宣布这个问题已经解决了!请向下查看我的答案以获取步骤。感谢您的帮助!

CNi*_*ife 3

我很高兴发现为什么我无法在 Windows 10 上安装 JDK8。

真正的原因是我的 Windows 上的 JDK8 安装有问题。当升级到 8u162 时,JDK 的安装程序并未完全删除版本 8u152 的安装。因此,当我尝试将 8u162 升级到 8u172 时,错误的注册表值总是导致失败。

当我尝试通过Visual Studio Installer安装JDK时,我发现了真正的原因。毫不奇怪,它失败了,代码为 0xC0000005。与JDK安装程序不同,Visual Studio安装程序留下了详细的安装日志。在日志的末尾,我发现了以下几行:

[2018/04/25 23:19:10.371, jdk-8u161-windows-i586.exe (PID: 12756, TID: 12572), JavaEnvironment.cpp:473 (JavaEnvironment::detect)]
TRACE: Entering JavaEnvironment::detect
[2018/04/25 23:19:10.386, jdk-8u161-windows-i586.exe (PID: 12756, TID: 12572), JavaEnvironment.cpp:490 (JavaEnvironment::detect)]
TRACE: Installed Java detected: version=1.8.0; arch=64; productCode={64A3A4F4-B792-11D6-A78A-00B0D0180152}; type=1
[2018/04/25 23:19:10.386, jdk-8u161-windows-i586.exe (PID: 12756, TID: 12572), JavaEnvironment.cpp:140 (`anonymous-namespace'::detectHomeDir)]
TRACE: Find home dir of {64A3A4F4-B792-11D6-A78A-00B0D0180152} Java installation
[2018/04/25 23:19:10.402, jdk-8u161-windows-i586.exe (PID: 12756, TID: 12572), JavaEnvironment.cpp:154 (`anonymous-namespace'::detectHomeDir)]
WARNING: Unexpected empty value of [InstallLocation] product property of {64A3A4F4-B792-11D6-A78A-00B0D0180152} Java installation. Fall back to heuristic home directory detection.
[2018/04/25 23:19:10.402, jdk-8u161-windows-i586.exe (PID: 12756, TID: 12572), JavaEnvironment.cpp:162 (`anonymous-namespace'::detectHomeDir)]
TRACE: Try home directory from [ProductIcon] product property of {64A3A4F4-B792-11D6-A78A-00B0D0180152} Java installation.
[2018/04/25 23:19:10.419, jdk-8u161-windows-i586.exe (PID: 12756, TID: 12572), JavaEnvironment.cpp:191 (`anonymous-namespace'::detectHomeDir)]
TRACE: Try home directory from [Readme] registry value of {64A3A4F4-B792-11D6-A78A-00B0D0180152} Java installation.
[2018/04/25 23:19:10.455, jdk-8u161-windows-i586.exe (PID: 7320, TID: 13960), FileUtils.cpp:603 (FileUtils::`anonymous-namespace'::deleteFileImpl)]
TRACE: Deleted [C:\Users\CNife\AppData\Local\Temp\jds1029609.tmp\jdk-8u161-windows-i586.exe] file
[2018/04/25 23:19:10.459, jdk-8u161-windows-i586.exe (PID: 7320, TID: 13960), FileUtils.cpp:654 (FileUtils::deleteDirectory)]
TRACE: Deleted [C:\Users\CNife\AppData\Local\Temp\jds1029609.tmp] directory
Run Code Online (Sandbox Code Playgroud)

它表明我已经安装了JDK8,但我找不到!

所以一切都很简单,我下载了微软的官方工具:修复阻止程序安装或删除的问题

在已卸载的软件列表中,找到“Java 8 Update 152(64位)”。单击“下一步”将完全删除它。然后我双击8u172的安装程序,它成功了!