我的开发团队最近被迫转到一个远程开发环境,在该环境中我们无法完全访问服务器。在进行转换之前,我们拥有一个可以在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会破坏较旧的编译版本?