Jar 注册表项'';有价值';1.7';,但是';1.6';是必需的。安装了Java1.7,注册表指向它
我的开发团队最近被迫转入一个远程开发环境,在那里我们无法完全访问服务器。在更换之前,我们有一个JAR,它在Java1.7x64和JRE7上运行良好。当我们转移到新服务器时,我们的JAR运行正常,但是一位服务器管理员“更新”了我们的Java到旧版本,并卸载了我们正在使用的版本。别问我为什么,我不知道。我重新安装了Java1.7,并与JRE一起卸载了1.6 运行时出现以下问题,没有生成错误:Jar 注册表项'';有价值';1.7';,但是';1.6';是必需的。安装了Java1.7,注册表指向它,jar,environment-variables,java,Jar,Environment Variables,Java,我的开发团队最近被迫转入一个远程开发环境,在那里我们无法完全访问服务器。在更换之前,我们有一个JAR,它在Java1.7x64和JRE7上运行良好。当我们转移到新服务器时,我们的JAR运行正常,但是一位服务器管理员“更新”了我们的Java到旧版本,并卸载了我们正在使用的版本。别问我为什么,我不知道。我重新安装了Java1.7,并与JRE一起卸载了1.6 运行时出现以下问题,没有生成错误: Registry key 'Software\JavaSoft\Java Runtime Environme
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%变量和系统路径中都有JDK 1.7和JRE 7。我甚至重新安装了JRE 6,并在稍后将其放入系统环境路径变量中,得到了相同的结果
我还将注册表改回1.6,结果如下,我查了一下,似乎是因为安装了多个Java(导致了我最初的问题):
我会很感激你们的任何见解,因为我一直在各种论坛上寻找,但似乎没有什么是我的问题。此外,这也发生在我们正在使用的另一台服务器上。谢谢
更新:将JAR重新编译为1.6或1.7并与JDK匹配不会带来好运。还有,为什么新版本的Java会破坏旧的编译版本呢?jar被编译成兼容
1.6
。这就是为什么会出现这个错误。两种解决方案:1) 使用Java1.6 或
2) 重新编译jar,使其符合您的环境
1.7
当您不知何故混淆了java本身时,就会发生这种情况。您正在尝试运行一个java 6虚拟机,其中发现了一个JRE 7。即使在配置错误的环境中键入命令行java
或java-version
,也可能会显示此问题。JAR不是问题所在,除非JAR中的代码在Windows注册表中查找JAR(这可能不是您的情况)
在我的例子中,我在
Windows/System32
文件夹中有来自Java6的java.exe
、javaw.exe
和javaws.exe
(不知道它是如何出现的)。JDK和JRE的其余部分位于C:\Java\JDK_1.7.0\bin
内的路径中。哎呀 我不知道是否有人仍在关注此线程,但我最近在尝试将ActiveMQ 5.10作为Windows服务启动时遇到了此问题
我没有设置JAVA_主路径。
我安装了Java6和Java7,但默认版本是v7。(即,如果我打开一个命令窗口并键入“java-version”)
这就是线索所在——“java-version”返回了“java热点(TM)64位服务器虚拟机(构建23.1-b03,混合模式)”,但我安装了Win32服务
事实证明,如果在64位机器上使用Win32包装器,它会以某种方式决定使用不同版本的Java
所以我的修复方法是卸载32位版本的包装器,然后安装64位版本。
厌恶我的机器;我猜只是习惯。。。但幸运的是,我最终解决了这个问题…使用regedit删除了与java 7对应的条目。它会起作用。我已经在windows/system32上删除了java文件,并且还从PATH变量中删除了c:\ProgramData\Oracle\java\javapath,因为有3个指向java 1.8文件的符号链接 我在%JAVA_HOME%变量中有JDK 1.7,在路径中有java1.7/bin PS1:我的问题是在Java1.7和Java1.8之间
PS2:我不能将此作为对Victor答案的评论,因为我没有足够的分数。在已经运行java 7的系统上安装java 8(jdk&jre)时,也有类似的错误 错误:注册表项“Software\JavaSoft\Java运行时” 环境“\CurrentVersion”的值为“1.8”,但需要“1.7” 错误:找不到java.dll错误:找不到java SE运行时环境 我的环境设置正确(Path&java_home定义正确),但问题源于8之前的java安装程序的工作方式,即他们用于将三个可执行文件(java.exe、javaw.exe和javaws.exe)复制到Windows系统目录。除非被新的pre-8安装覆盖,否则这些将保留 但是,Java 8安装程序在一个新目录C:\ProgramData\Oracle\Java\javapath中创建符号链接,指向实际的JRE 8位置 这意味着您将实际运行旧的7个EXE,但使用新的8个DLL 因此,解决方案只是从windows系统目录中删除3个Java EXE,如上所述 如果您在64位Windows上运行32位Java,则EXE将位于Windows\SysWOW64中,否则位于Windows\System32中。对于我的Win7 悖论存在于System32文件夹中的java.exe和javaw.exe中。 打开那个文件夹,我看不到它们,但使用“开始”菜单中的搜索,我得到了这些文件的链接,并将它们删除。接下来,searsh给了我JAVA_主页上的文件链接
magic)我通过卸载Java 1.8解决了这个问题,在开始菜单中键入“regedit”打开注册表编辑器 转到左侧注册表资源管理器/目录树菜单上的“HKEY_LOCAL_MACHINE” 单击“HKEY_本地_机器”注册表中的“软件” 单击“软件”注册表中的“JavaSoft” 单击“JavaSoft”注册表列表中的“Java运行时环境”,您可以看到已安装Java的不同版本 单击“Java运行时环境”-在右边您将看到4-5行。请选择“当前版本”并右键单击(选择修改选项)将版本更改为“1.7”
现在魔术已经完成了用正确的
java.ex更改目录
Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
cd C:/Program Files/Java/jdk1.7.0_25/bin
java -jar C:/installed/selenium-server-standalone-2.53.0.jar