registry项“…”的值为“1.7”,但是“1.6”是必需的。 Java 1.7安装和registry指向它

我的开发团队最近被迫转移到远程开发环境,在那里我们没有完全访问服务器。 在更改之前,我们有一个JAR在Java 1.7 x64以及JRE 7上运行良好。当我们移动到新服务器时,我们的JAR运行正常,但是其中一个服务器pipe理员将我们的Java更新为更旧版本,并卸载了我们正在使用的一个。 不要问我为什么,我不知道。 我重新安装了Java 1.7并卸载了1.6以及JRE。

运行时发生以下问题,没有生成错误:

Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion' has value '1.7', but '1.6' is required. Error: could not find java.dll Error: could not find Java SE Runtime Environment. 

我在笔记本电脑上运行相同的JAR,没有任何问题。 服务器和笔记本电脑在相应的%HOME%variables和系统PATH中都有JDK 1.7和JRE 7。 我甚至重新安装了JRE 6,并将其放在系统环境PATHvariables中,结果相同。

我也改变了registry回来看看1.6,结果在下面,我抬头,它似乎是从多个Java安装(导致回到我原来的问题):

 Exception in thread "main" java.lang.UnsupportedClassVersionError: ... : Unsupported major.minor version 51.0 

我将不胜感激,因为我一直在寻找各种论坛,但似乎没有任何问题。 而且,这也发生在我们正在使用的另一台服务器上。 谢谢!

更新:重新编译JAR到1.6或1.7和匹配的JDK没有运气。 另外,为什么世界上会有更新版本的Java打破旧的编译版本?

当你不知何故糊涂java本身时,会发生这种情况。 您正试图运行Java 6虚拟机,在其中find了JRE 7.即使您在错误configuration的环境中键入命令行javajava -version ,也可能会显示此问题。 JAR不是问题,除非JAR中的代码在Windowsregistry中查找(这可能不是您的情况)。

在我的情况下,我有在Windows/System32文件夹Java 6中的java.exejavaw.exejavaws.exe (不知道它是如何在那里)。 其余的JDK和JRE在C:\Java\jdk_1.7.0\bin中的PATH中find。 哎呀!

刚刚在已经运行Java 7的系统上安装java 8(jdk&jre)时出现类似的错误。

错误:registry项“Software \ JavaSoft \ Java Runtime”

环境'\ CurrentVersion'的值为'1.8',但是'1.7'是必需的。

错误:无法findjava.dll错误:无法findJava SE运行时环境。

我的环境设置正确(Path&java_home正确定义),但问题来自于前8个Java安装程序的工作方式,也就是他们用来复制三个可执行文件(java.exe,javaw.exe&javaws.exe )到Windows系统目录。 除非被新的8之前的安装覆盖,否则这些保留。

但是,Java 8安装程序会在指向实际的JRE 8位置的新目录C:\ ProgramData \ Oracle \ Java \ javapath中创build符号链接。

这意味着你将实际运行旧的7 exes,但使用新的8个DLL。

所以,解决方法就是简单地从windows系统目录中删除3个Java exes,如上所述。

如果您在64位Windows上运行32位Java,则Exes将位于Windows \ SysWOW64中,否则位于Windows \ System32中。

我在windows / system32删除了java文件,而且我也从PATHvariables中删除了c:\ ProgramData \ Oracle \ Java \ javapath,因为有3个符号连接到java 1.8文件。

我在PATH中的%JAVA_HOME%variables和java1.7 / bin中安装了JDK 1.7。

PS1:我的问题是在Java 1.7和Java 1.8之间。

PS2:我不能添加这个作为评论给维克托的答案,因为我没有足够的分数。

在开始菜单中input“regedit”打开registry编辑器

转到左侧registry资源pipe理器/树形菜单上的“HKEY_LOCAL_MACHINE”

点击“HKEY_LOCAL_MACHINE”registry中的“SOFTWARE”

点击“SOFTWARE”registry中的“JavaSoft”

点击“JavaSoft”registry列表中的“Java运行时环境”,在这里您可以看到已安装的Java的不同版本

点击“Java Runtime Environment” – 在右边你会得到4-5行。 请select“CurrentVersion”并右键单击(select修改选项)将版本更改为“1.7”

现在魔法已经完成了

我不知道是否还有人在跟踪这个线程,但是当我尝试将ActiveMQ 5.10作为Windows服务启动时,我最近遇到了这个问题。

我没有设置JAVA_HOMEpath。 我安装了Java 6和Java 7,但默认版本是v7。 (即,如果我打开了一个命令窗口并input“java -version”)。

这是线索 – “java -version”返回“Java HotSpot(TM)64位服务器虚拟机(内部版本23.1-b03,混合模式)”,但我已经安装了Win32服务…

事实certificate,如果您在64位机器上使用Win32封装器,它会以某种方式决定使用不同版本的Java …

所以我的修复是卸载32位版本的包装并安装64位版本。 厌恶我的机器; 只是习惯我猜…但幸运的是我最终解决了这个问题…

对于我的Win7

悖论是在System32文件夹中的java.exe和javaw.exe。 打开该文件夹我看不到他们,但使用开始菜单中的search我得到这些文件的链接,删除它们。 接下来searsh给了我从JAVA_HOME文件的链接

魔法 )

切换到正确的java.exe目录,即转到所需的JDK版本java.exe

 cd C:/Program Files/Java/jdk1.7.0_25/bin 

从这个目录运行java.exe ,它优先于registry和$ PATH设置。

 java -jar C:/installed/selenium-server-standalone-2.53.0.jar 

我通过卸载Java 1.8来解决这个问题

该jar被编译为1.6兼容。 这就是为什么你得到这个错误。 两项决议:
1)使用Java 1.6

要么

2)重新编译该jar以符合您的环境1.7

使用registry编辑器,删除对应于Java 7的条目。它将工作。