注册表项错误:Java版本的值为'1.8',但必须为'1.7'


91

在跑步的时候

sencha app build production

我收到以下错误:

错误:注册表项'Software \ JavaSoft \ Java Runtime Environment'\ CurrentVersion'

的值为“ 1.8”,但必须为“ 1.7”。错误:找不到java.dll错误:找不到Java SE运行时环境。

java -version ,命令显示如下:

Java版本“ 1.8.0_40” Java™SE运行时环境(内部版本1.8.0_40-b26)Java HotSpot(TM)64位服务器VM(内部版本25.40-b25,混合模式)

找不到路径出问题的地方。任何想法?

-----------------------编辑-------------------------- ----------------------

注意:我正在使用Windows 7(64位)。

我尝试卸载sencha touch cmd并重新安装。但是还是一样的错误。

我已经卸载了所有的Java版本实例并重新安装了最新的实例,但是问题仍然存在。

Answers:


291

经过数百种技巧的尝试,终于获得了成功。

我删除了所有java.exejavaw.exejavaws.exe从我的

  1. Windows\System32

  2. Windows\SysWOW64 夹。[如果您使用x64系统(Win 7 64位),请尝试第2步]


11
赢得10个64位用户:删除3个文件System32将解决此问题。
iTurki '17年

4
但是,我们必须关闭并重新打开cmd,然后键入java -version才能查看更改...就像一个魅力谢谢!
Cristian B.

1
@SkepticScribbler:当您以某种方式混淆了Java本身时,就会发生这种情况。您试图运行在Java 7 VM上找到JRE 8的地方。即使在错误配置的环境中仅在命令行中键入java或java -version,也可能会显示此问题。
阿南德·古普塔

@AnandGupta这是瞎猜,不是一个解决办法- stackoverflow.com/a/53192247/1423507
masseyb

39

就我而言(Windows 7 64位),我只是做了以下工作:

  • 删除了对C:\ ProgramData \ Oracle \ Java \ javapath的引用;来自Path环境变量
  • C:\ Windows \ System32文件夹中删除文件javajavawjavaws

之后,我关闭了所有打开的命令行控制台,重新打开它们并运行java -version


在Windows 10上安装JDK5u14,JDK6u34,JDK7u51和JDK8u121(按此顺序)时出现此问题。从Windows文件夹中删除Java文件还不够。还必须从PATH环境变量中删除路径。

32
  1. 公开注册
  2. [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
  3. 将值CurrentVersion从“ 1.8” 更改为“ 1.7”

2
谢谢。它解决了我的问题。我无权删除SysWOW64下的任何内容。只需通过regedit更改CurrentVersion即可解决我的问题。
克里希

1
比尝试删除所有无关的Java版本要简单得多的解决方案!
弗雷德·安德鲁斯

..但是,它不能解决任何问题。然后,安装程序会抱怨说Java 8是必需的。
user508402 '19

谢谢,这个解决方案一直在努力解决这个错误很长时间
Abhishek Sawant

19

回复:Windows用户

否。请勿从PATH变量中删除Javapath环境引用。

注册表不起作用的原因是,Oracle Javapath脚本需要在JRE和JDK目录之前的PATH序列中运行-它会整理出当前版本:

将此目录放在%PATH%变量的HEAD处:

C:\ProgramData\Oracle\Java\javapath

[或桌面上的任何位置]

因此您的PATH看起来像这样-例如我的

PATH=C:\ProgramData\Oracle\Java\javapath;<other path directories>;E:\Program Files\Java\jdk1.8.0_77\bin;E:\Program Files\Java\jre1.8.0_77\bin

然后,您将看到正确的当前版本:

C:\>java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)

这对我有用。我有Windows 7(64位)。根据您的建议,我已将C:\ ProgramData \ Oracle \ Java \ javapath移至PATH的开头。谢谢!
Softwarelover

1
嘿,它起作用了!谢谢,不要忘记重启计算机。
Sandoval0992

12

我的经验:

我正在使用Windows 8.1,并且我已经将JAVA版本从1.8降级到1.7,并且出现了相同的错误。

错误:注册表项“ Software \ JavaSoft \ Ja”的值为“ 1.7”,但必须为“ 1.8”。

我从C:\ Windows \ System32文件夹中删除了java.exejavaw.exejavaws.ex e ,它对我有用。


如果路径中存在其他Java版本的其他Java可执行文件,则此方法将无效。
颠覆了

9

我遇到了同样的问题。对我有用的简单解决方案是重新排列PATHfor中的条目JRE/JDK。此问题开始出现在安装后,JRE 8其安装将一些可执行文件放在System32 or SysWOW64目录中,这些可执行文件混乱了。解决问题:

  1. 创建指向JDK home的环境变量JAVA_HOME

    set JAVA_HOME=C:\Progra~1\Java\jdk1.8.0_45

  2. 将条目%JAVA_HOME%\bin放在开始处的PATH环境变量中。附加的现有值PATH。例如:

    path=C:\Program Files\Java\jdk1.8.0_45\bin;%path%


3
如果您希望并排保留多个版本的Java,并且没有权限修改注册表并从windows \ system文件夹中删除文件,则这是最佳解决方案。
Heinz

3

我没有删除任何java.exe文件,但更改了系统的顺序-“ path”变量-使其将%JAVA_HOME%\ bin反映为第一项。做到了。


2

错误是明确的...

错误:注册表项'Software \ JavaSoft \ Java Runtime Environment'\ CurrentVersion'的值为'1.8',但必须为'1.7'。

错误:找不到java.dll

错误:找不到Java SE Runtime Environment。

...您正试图java.exeHKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment> CurrentVersion注册表项的值为1.8 时使用1.7可执行文件。

提出的解决方案反复出现的主题是该错误是配置错误。可以通过各种不同的方式解决该错误(例如,重新配置用户环境或删除Java可执行文件,但希望用户中还有另一个后备之处java.exe%PATH%并且该后备问题java.exe是正确的可执行文件)。

正确的解决方案取决于你想要达到什么:“?你想从JDK-8降级为JDK-7要升级到JDK-8 ...”

复制步骤

  1. 安装jdk-7u80-windows-x64.exe

笔记:

  • java.exe用户可用的可执行文件%PATH%安装在C:\Windows\System32
  • 安装不会更新用户 %PATH%
  • HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersion字符串注册表项创建(其中包括)值为1.7
  1. 安装jdk-8u191-windows-x64.exe

笔记:

  • 用户%PATH%已更新为包括C:\Program Files (x86)\Common Files\Oracle\Java\javapath在第一个条目中
  • 在该HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersion字符串注册表项值更新为1.8
  1. 更新用户%PATH%环境变量,删除C:\Program Files (x86)\Common Files\Oracle\Java\javapath

  2. 在新的命令提示符下 java -version

错误:注册表项'Software \ JavaSoft \ Java Runtime Environment'\ CurrentVersion'的值为'1.8',但必须为'1.7'。

错误:找不到java.dll

错误:找不到Java SE Runtime Environment。

解决方案

  1. OP的解决方案https://stackoverflow.com/a/29769311/1423507是“手指交叉,希望java.exe用户中存在一个后备,%PATH%并且该后备可执行文件是正确的”方法可以解决该错误。给定再现步骤,从中删除java.exejavaw.exejavaws.exe可执行文件C:\Windows\System32(仅在我的情况下)将导致用户中不再java.exe存在任何内容,%PATH%从而导致错误'java' is not recognized as an internal or external command, operable program or batch file.,而错误并不能解决。

  2. 答案https://stackoverflow.com/a/35775493/1423507https://stackoverflow.com/a/36516620/1423507可以工作,但是您将恢复使用java.exe1.7(例如,更新CurrentVersion注册表项的值以匹配在中java.exe找到的版本用户%PATH%)。

  3. 确保java.exe1.8是第一个在用户中发现的%PATH%(无关紧要),即:

    • 更新用户%PATH%以使其C:\Program Files (x86)\Common Files\Oracle\Java\javapath首先包含(确保该目录中的可执行文件正确)
    • 更新用户%PATH%首先包括您的Java二进制文件的绝对路径(set PATH="C:\Program Files\Java\jre1.8.0_191\bin;%PATH%"
    • 一套Java特定的环境变量和更新用户%PATH%与他们(set JAVA_HOME="C:\Program Files\Java"; set JRE_HOME=%JAVA_HOME%\jre1.8.0_191; set PATH=%JRE_HOME%\bin;%PATH%

@whoever_that_downvotes-没有任何建设性的反馈,就无法增强这个答案。对“为什么”发表评论,也许可以使这个答案更好,以造福社区。
masseyb

2

我在某些运行Java的Windows服务上遇到此错误。最后,在我的机器上,我尝试卸载其他版本的Java。

我只剩下1.8,现在一切正常。


1

aribeiro的答案对我有用-稍作更改

  • 我删除了对C:\ ProgramData \ Oracle \ Java \ javapath的引用;来自Path环境变量
  • 我将/ path / to / jdkhome设置为PATH环境变量中的第一个条目。我认为仅此一项就足够了。

1

至于我在Win7 64位。

复制文件夹中的java.exe javaw.exe javaws.exe C:\Program Files\Java\jre1.8.0_91\bin to the C:\Windows\System32.

然后打开cmd,键入java -version。

C:\Users\HEcom>java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

在执行上述操作之前,请确保注册表的CurrentVersion为1.8

在“开始”菜单中,键入“ regedit”以打开注册表编辑器

  1. 转到左侧注册表浏览器/树菜单上的“ HKEY_LOCAL_MACHINE”
  2. 在“ HKEY_LOCAL_MACHINE”注册表中单击“软件”
  3. 在“软件”注册表中单击“ JavaSoft”
  4. 在注册表的“ JavaSoft”列表中单击“ Java Runtime Environment”,您可以看到已安装的Java的不同版本。
  5. 单击“ Java运行时环境”-在右侧,您将获得4-5行。请选择“ CurrentVersion”,然后单击鼠标右键(选择修改选项),以确保版本为“ 1.8”

这真是个坏主意。必须将Binaries文件夹添加到path,而不是将文件移动到path中已经存在的文件夹。如果其他人必须在系统上更新Java并且不了解此“解决方案”,则可能会导致严重的头痛。而这恰恰是操作的问题根源……改正路径。
Riwels

将“ 我只是移动”更改为“ 我只是复制”,您将一路顺风。
Matthieu

1

在阅读并尝试了上述所有方法之后,我为该问题提供了解决方案。

就我而言,我试图降级Java以在中使用打印输出Apache ActiveMQ。卸载所有Java版本并清理注册表后,我得到了相同的错误

错误:注册表项'Software \ JavaSoft \ Java Runtime Environment'\ CurrentVersion'的值为'1.7',但必须为'1.8'。”

在我来说,我需要去的环境变量,编辑路径,打开javapath位置(C:\ProgramData\Oracle\Java\javapath),而且它是-三个文件(java.exejavaw.exejavaws.exe)从JRE8版本依然存在。

建立了这个事实之后,我简单地使用C:\Windows\SysWOW64目录中的相同文件(它们来自JRE7版本)来切换它们,并且它们都运行良好。


1

最新的Java自动更新后,我无法从命令提示符下运行Java。

我的路径变量具有“ C:\ ProgramData \ Oracle \ Java \ javapath;”

我无法进入“ C:\ ProgramData \ Oracle \ Java \ javapath;” 从命令提示符窗口,因为它不存在。

我删除了C:\ ProgramData \ Oracle \ Java \ javapath;' 从路径变量中替换为“ C:\ Program Files \ Java \ jre1.8.0_141 \ bin;”


这不仅仅是评论,而是答案。问题是关于一个非常特定的工具,并且很清楚地发现java是在实践中发现的。
GhostCat

1

您必须在变量JAVA_HOME中定义jdk文件夹,将%JAVA_HOME%添加到变量路径中

删除或更改文件夹system32中的java.exe,javaw.exe和javaws的名称

执行cmd.exe,java -version现在采用您在JAVA_HOME中定义的新版本。


1

除了Anand Gupta的答案外,请确保除了您需要的Java外,不要使用其他Java。运行which javawhere java对于Windows),查看使用了哪些Java可执行文件。只需删除您不想使用的文件,如果您不需要的文件不存在,请将其添加到PATH。


0

首先,您应该拥有Java7。如果没有,请首先安装它(我不知道您在使用什么,Linux,Mac,yum,apt,自制软件,您应该自己弄清楚。)

如果您已经拥有Java 7,请运行:

echo $JAVA_HOME

输出应该是这样的:/usr/lib/jvm/java-8-oracle。在此目录附近,您应该看到java-7目录。找到它后,运行

export JAVA_HOME=${java-7-dir}

更改{java-7-dir}您的目录路径。然后,您可以运行命令。

这只是一个临时解决方案。要永久更改它,请在~/.bashrc文件中输入上述命令。

编辑:如果使用WindowsJAVA_HOME请将环境变量更改为Java 7安装目录路径。


@AnandGupta我添加了Windows机箱。
mtyurt 2015年

如果是Linux,则需要在JAVA_HOME中提供Java二进制文件的路径。例如,/ usr / java / jdk1.5.0_07 / bin / java。如果是Windows,则只需安装目录即可。
Aditya K

0

我的简短贡献,是与Talend Open Studio 64位版本共享相同的问题。

  1. 手动启动.. \ TOS_DI-Win32-20150702_1326-V6.0.0 \ TOS_DI-win-x86_64.exe(不链接启动Windows菜单)
  2. 并且此注册表错误消息出现

要解决此问题,请删除c:\ ProgramData \ Oracle \ Java \ javapath \上的所有java.exe,javaw.exe和javaws.exe文件。

和TOS正确以64位版本开始!


0

从系统路径中删除它:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

它将解决将Java版本从1.7升级到1.8的问题


1
你能告诉我们为什么吗?
Vinay Prajapati 2015年

0

jre版本1.8中存在另一个java.exe,它在“路径”中,如果可能,应找到并删除它。对于需要jre的应用程序,它可能位于用户tempdata中。


0

请更改JAVA_BIN和JAVA_HOME系统变量,然后重新启动系统或重新登录。您遇到该错误,因为它仍然是jdk1.7路径。在Windows上是这样的: 在此处输入图片说明


0

只需安装Java SE Runtime Environment JRE 7!

现在,您可以在“控制面板”的“程序和功能”中看到“ java 7”和“ java 8”

它为我工作。


0

解决此问题的一种可能方法是,在Sencha CMD文件夹中添加一个蝙蝠文件,该文件在该线程Sencha Cmd 5 + Java 8 Error时提示存在问题

该批处理的名称为“ sencha.bat”,其代码如下:

@echo off
set JAVA_HOME=<YOUR JDK 7 HOME>
set PATH=%JAVA_HOME%\bin;%PATH%
set SENCHA_HOME=%~dp0
java -jar "%SENCHA_HOME%\sencha.jar" %*

将它放在sencha文件夹中

C:\Users\<YOUR USER>\bin\Sencha\Architect\Cmd\6.2.0.103

下一步是更改PATHEXT环境变量。更改用户变量以使其影响最小。

我从

COM;.CMD;.EXE;.BAT;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

COM;.BAT;.EXE;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

这个想法是让Windows首先运行.bat文件,而不是.exe文件。这很重要,因为在sencha文件夹中已经有一个“ sencha.exe”文件。在命令行中,如果键入“ sencha”,它将执行“ sencha.exe”而不是“ sencha.bat”。

这是唯一适用的解决方案,因为在权限方面我受到严格限制。


0

我的系统:-Windows 8.1

Java环境

  • C:\ JavaEnvironment \ Java \ jdk1.8.0_161
  • C:\ JavaEnvironment \ Java \ jdk1.7.0_75

我最近安装了Oracle 11g XE,并且在命令提示符下访问“ java”命令时收到了上述错误消息。

我检查了环境变量,检查了序列(如先前的答复所述),并检测到我的系统PATH变量具有以下条目作为第一个条目:

C:\ OracleDatabase \ oraclexe \ app \ oracle \ product \ 11.2.0 \ server \ bin ;

我更改了序列并将JDK路径定义为第一个条目:

在此处输入图片说明

我将相同的更改复制到“用户变量:路径”

在此处输入图片说明

完成上述活动后,我重新启动了命令提示符并执行了java -version命令,该问题已消失。它显示了Java 8作为当前版本。


-1

我有类似的问题。将JDK和JRE路径移动到path变量的顶部可以解决此问题(该优先级高于System32下提供的优先级)

例如,这是我的:

在此处输入图片说明


-2

从程序列表中取消Java 8的安装。通过以下步骤:

在桌面上,单击屏幕左下方的“开始”菜单(或“开始”球)。转到控制面板。单击程序和功能。选择Java8并单击卸载


-2

在任务管理器中杀死所有与Java相关的应用程序,然后从C:\ windows \ System32删除Java.exe,Javaw.exe和Jawaws.exe

这应该可以解决您的问题... :)


您能否说明清楚如何解决当前的问题?
穆罕默德·马穆尔·汗

-3

只是这样做,它奏效了

HKLM>软件> JavaSoft> Java运行时环境

只需手动将当前版本更改为1.7即可。

大声笑...但是有效!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.