我办公室的Windows XP工作站上安装了几个旧版本的Java JDK。今天我决定安装最新的Java JDK并卸载旧的JDK。很糟糕的错误!
我不明白为什么,但XP似乎认为其中一个已删除的JDK安装是它想要使用的。不确定它是否相关,但它是JDK 1.6.0_13。我之前使用控制面板中的XP“添加或删除程序”卸载了它。 JDK文件夹消失了(正如人们所预期的那样),但显然没有被遗忘。以下是症状:
Eclipse将不再启动并使用我安装的新JDK。 Eclipse就好像系统上没有JDK可用。
当我在命令提示符下键入java -version
时,我得到以下回复:
错误:无法打开`C:\ jdk1.6.0_13 \ jre \ lib \ i386 \ jvm.cfg'
(哎呀谢谢。我从来没有猜到无法找到卸载的JDK ...... )
在机器上搜索时,我发现了一个名为“Java Quick Starter”的系统服务,该服务指向已移除的JDK目录。
现在我知道你们当中有些人在想什么。他有一个指向旧位置的JAVA_HOME系统变量和/或在他的PATH系统变量中有旧位置。不是这样的!没有系统变量引用这个旧的JDK,我的PATH也没有。事实上,我已经为今天早上安装的新JDK定义了一个新的JAVA_HOME,并将其添加到系统PATH中。我确信这至少会让我从命令提示符中获得成功,但没有运气。
如果您想知道我在安装/卸载/系统变量更改后是否重新启动,是的,我有。
问题
有谁知道我在这里做错了什么?如何从系统中清除对已卸载JDK的这些引用,以便它可以开始使用新安装的JDK?
编辑1
我检查了注册表为 duffymo 建议。 HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft
下的某些内容看起来并不合适。我删除的1.6.0_13 JDK仍然存在一个条目,并且一些较新的JDK安装在这里有条目,其JavaHome属性设置为旧1.6.0_13 JDK的路径,出于某种莫名其妙的原因!
我卸载了计算机上的所有JDK,但是在此注册表部分中仍然存在旧的1.6.0_13 JDK的剩余部分。
此外,“添加和删除程序”列表中仍会列出1.6.0_21 JRE,如果我尝试卸载它,则会出现错误。那个也显示在注册表中,并且有一个注册表“JavaHome”键,其值指向不再存在的JDK 1.6.0_13。
答案 0 :(得分:1)
检查注册表,看看是否有东西挂在那里指向旧的JRE。
查看HKEY_LOCAL_MACHINE / SOFTWARE / JavaSoft。您将在那里看到Java Development Kit和Java Runtime Environment。看看他们说了什么。
既然您发现注册表值不正确,我建议您修改它们以指向正确的值或删除它们,卸载JDK,然后重新安装。
答案 1 :(得分:0)
您也可以尝试禁用启动服务。
答案 2 :(得分:0)
我在注册表上尝试过CCleaner,但它没有解决问题。我当时感到非常绝望,并决定用regedt32
搜索注册表中的“jdk1.6.0”实例并删除显然是垃圾的所有内容。我知道不再存在的对JDK / JRE实例的任何注册表引用都被删除了。通常这意味着删除整个密钥,但有一些密钥,我只需要删除单个值/数据对。我在我的可怜的无防御登记处完成肉丸手术后重新启动。
免责声明:我不建议任何人开始在其注册表中乱用随机密钥作为解决问题的主要方法!在考虑重新安装工作站并重新安装一切之前,这是我的最后一招。
话虽如此,这种方法确实解决了我的问题。我能够安装JRE,然后像Eclipse这样的东西再次开始正常工作。我接下来安装了相同版本的JDK而没有发生任何事故。