我的开发团队最近被迫转移到一个远程开发环境,我们无法完全访问服务器。在更改之前,我们有一个在 Java 1.7 x64 和 JRE 7 上运行良好的 JAR。当我们转移到新服务器时,我们的 JAR 运行良好,但随后其中一位服务器管理员“更新”了我们的 Java 到旧版本版本并卸载了我们正在使用的版本。不要问我为什么,我不知道。我重新安装了 Java 1.7 并连同 JRE 一起卸载了 1.6。
运行时出现以下问题,没有构建错误:
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 会破坏旧的编译版本?