我的开发团队最近被迫转移到一个远程开发环境,在那里我们无法完全访问服务器。在更改之前,我们有一个在 Java 1.7 x64和 JRE 7上运行良好的 JAR。当我们转移到新服务器时,我们的 JAR 运行正常,但是其中一个服务器管理员“更新”了我们的 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。我甚至重新安装了 JRE6,并将其放置在系统环境 PATH 变量中,得到了相同的结果。
我还将注册表修改为1.6,结果如下,我查了一下,似乎是因为安装了多个 Java (导致了我最初的问题) :
Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
我会很感激你们所有的洞察力,因为我一直在寻找各种论坛,但似乎没有什么具体的问题。此外,这也发生在我们正在使用的另一台服务器上。谢谢!
更新: 无法将 JAR 重新编译为1.6或1.7并匹配 JDK。另外,为什么新版本的 Java 会破坏旧的编译版本呢?