Java打开注册表键时出错。

136

当我尝试在命令提示符中执行任何Java操作时,出现了这个错误:

Error opening registry key 'Software\JavaSoft\Java Runtime Environment.3'
Error: could not find Java.dll
Error: could not find Java 2 Runtime Environment

我几天前试图删除Java目录和注册表,重启电脑后Java仍然正常工作,但今天再次重启后出现了错误。我尝试过卸载和重新安装,但没有解决问题。我已经安装了最新的Java JRE,并在环境变量中设置了路径。有人知道如何解决这个问题吗?


我尝试通过命令提示符卸载Java,结果搞乱了我的卸载程序。所以我手动删除了文件夹并删除了与之相关的注册表项。然后我重新启动计算机并重新安装了Java,一切正常,直到下一次重启。 - gFu
2
你尝试在重启后重新安装了吗?也许第三次就会成功。 - Atreys
是的,我有,但仍然不起作用。 - gFu
你尝试过备份其他文件并重新格式化电脑吗?之后你可以进行Java的全新安装。但这种方法可能有些过头了。 - Atreys
1
通过下载运行时,我解决了我的特定问题,尽管我已经安装了JDK。我在这里留下来,以防这对其他人有用。 - Dave
16个回答

238

请确保从 Windows\System32 文件夹中删除任何 java.exejavaw.exejavaws.exe文件,并且如果您使用的是 x64 系统(Win 7 64 位),请同样从 Windows\SysWOW64 文件夹中删除。

如果您在这些位置无法找到它们,请尝试从 C:\ProgramData\Oracle\Java\javapath 中删除它们。


7
我从system32文件夹中删除了“java”可执行文件,之后我不得不重新安装JRE。 然后,我的问题得到了解决。 感谢您提供的起点。 - dangowans
1
安装了安全补丁后,我无法打开Eclipse,因为出现了这个错误。非常感谢您的解决方案。但我想知道这里的真正原因是什么。 - pnv
1
对我来说起作用了!谢谢!还不得不重新安装JRE。 - kbonnelly
1
请问这些文件在system32文件夹中的作用是什么? - Rabia Naz khan
3
运行“where java”以查看上述可执行文件的位置。我的位置在C:\Program Files (x86)\Common Files\Oracle\Java\javapath. - Charis Moutafidis

97

您可以在Windows安装驱动器的ProgramData文件夹中找到名为"Oracle"的文件夹。删除该文件夹,希望这样可以解决问题。 在我的情况下,我的安装驱动器是C盘,我的路径是C:\ProgramData\Oracle


11
或者,从Windows的"Path"环境变量中移除C:\ProgramData\Oracle\Java\javapath - Gediminas Rimsa
@GediminasRimsa,我不确定这个路径环境变量在每种情况下都存在。但是感谢您的评论。 - Shuvankar Paul
1
我已经从环境变量中删除了路径,但仍然需要从ProgramData文件夹中删除Oracle文件夹才能使其正常工作。 - Irena Rich
@GediminasRimsa 我实际上在删除ProgramData中的Oracle文件夹后不得不删除环境变量。 - Alyosha_Karamazov

21

我曾经遇到过类似的问题。我安装了JDK7更新1,但无法使用它(可能是因为我找到并删除了安装JDK7之后安装的JRE6)。卸载JDK7是不可能的。解决方法是手动添加JRE注册表项。

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
"CurrentVersion"="1.7"

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.7]
"JavaHome"="C:\\Program Files\\Java\\jre7"
"RuntimeLib"="C:\\Program Files\\Java\\jre7\\bin\\client\\jvm.dll"

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.7.0_01]
"JavaHome"="C:\\Program Files\\Java\\jre7"
"RuntimeLib"="C:\\Program Files\\Java\\jre7\\bin\\client\\jvm.dll"

您需要根据自己的目录和版本进行调整。

如果这不起作用,仍然可以使用JavaRa https://singularlabs.com/software/javara/


遗憾的是,在Windows Server 2016上,这对我们没有起作用。我们仍然会收到“找不到指定的模块”的错误提示。 - Praxiteles
很遗憾听到这个问题...请尝试所有其他解决方案,搜索错误信息...如果您找到解决方案,请在此处分享,或创建一个新的问题。然而..."指定的模块无法找到"不是原始问题中讨论的错误信息。 - Tilman Hausherr
截至2021年8月,http://raproducts.org/wordpress/只会重定向到随机的诱骗和恶意软件网站。 - Daz
@Daz 谢谢,我已经找到产品在哪里了。难以相信我写这篇文章已经快十年了。不知道它是否仍然有效。 - Tilman Hausherr

12
删除本地路径为C:\ProgramData\Oracle\Java\javapath中存在的这三个文件。
java.exe
javaw.exe
javaws.exe

这对我解决了问题 :)


7

需要检查3个位置:

  1. 注册表HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.8.0_xxx\JavaHome
  2. Java控制面板-Java选项卡-查看-路径
  3. 环境变量-路径($env:Path)

这3个位置必须保持一致(如果有多个条目,请删除错误的条目)-就这样


6
在Windows 10上,我刚刚安装了JDK,并在检查版本时遇到了这些错误。我必须删除所有以java开头的可执行文件(即java.exejavaw.exejavaws.exe),并从路径C:\ProgramData\Oracle\Java\javapath中重新运行JDK安装程序,在重新启动终端程序后,java -v功能正常。

我必须这样做,但我不需要重新安装任何东西。删除exe文件解决了问题。 - Callat
在删除那些文件后,它已经在Windows 8中得到了修复。 - poovaraj

6

请确保从您的系统中删除任何 java.exe、javaw.exe 和 javaws.exe 文件。

  • 如果您有 x32 系统 (Win XP 32 位),请在 Windows\System32 文件夹下执行同样的操作

  • 如果您有 x64 系统 (Win 7 64 位),也请在 Windows\SysWOW64 文件夹下执行同样的操作


这只是已接受答案的副本吗? - Zoomzoom

2
我遇到了同样的问题:
Error opening registry key 'Software\JavaSoft\Java Runtime Environment

清空Windows\SysWOW64对Win7无效

在我的情况下,安装JDK8离线版有所帮助(从链接下载)


你的解决方案是唯一一个对我有效的。谢谢。 - Avv

1
我本想将此标记为评论,但无法(没有声望),只是想感谢Tilman。我一直在尝试让PDFsam(PDF拆分和合并)工作,但一直无法成功。
启动时会出现错误,指出找不到JRE 1.6.0。我有32位和64位版本,并且它们在各自的浏览器中都检查正常。
尝试反复卸载/重新安装和重启以及使用JavaRa。没有这样的运气,仍然不行。
在阅读此帖子后查看了注册表,没有...\SOFTWARE\JavaSoft\键,因此我添加了每个键及其各自的字符串值,指向我的x86版本(PDFsam是32位程序)。这解决了第一个问题,但是弹出了一个关于amd64库的错误,表明机器想要运行64位版本。因此,我将路径更改为64位JRE,PDFsam现在可以工作。
FYI-我通过搜索Java注册表键来到这里,之前无法从命令提示符中启动javaw.exe(即使添加了必要的路径到系统路径),进行了上述更改也解决了此问题。

1

我在使用JDK 1.7时遇到了这种错误,后来安装了JAVA JDK 1.8并将JAVA_HOME和PATH变量指向了1.8版本。当我尝试查找Java版本时,出现了这个错误。我重新启动了我的计算机,问题得到了解决。看起来修改环境变量后我们需要重新启动计算机。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接