注册表项“...”具有值“1.7”,但需要“1.6”。Java 1.7 已安装,注册表指向它
我的开发团队最近被迫进入远程开发环境,在那里我们没有对服务器的完全访问权限。在转换之前,我们有一个JAR在Java 1.7 x64和JRE 7上运行良好。当我们移动到新服务器时,我们的JAR运行正常,但是后来其中一个服务器管理员将我们的Java“更新”到旧版本并卸载了我们正在使用的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% 变量和系统 PATH 中都有 JDK 1.7 和 JRE 7。我甚至重新安装了JRE 6,并将其放置在系统环境PATH变量中,结果相同。
我还将注册表更改回1.6,结果如下,我查找了该结果,它似乎来自安装了多个Java(导致我的原始问题):
Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
我很感激你们所有人的任何见解,因为我一直在查看各种论坛,但似乎没有什么是我的问题。此外,这也发生在我们正在使用的另一台服务器上。谢谢!
更新:将JAR重新编译为1.6或1.7并匹配JDK没有运气。另外,为什么新版本的Java会破坏旧的编译版本呢?