如果安装了Java 8,则无法使用Java 7安装

如果安装了Java 8,则无法使用Java 7安装,java,windows,Java,Windows,我通常仍然在我所有的编码项目中使用Java7(这是一个公司的“政治”问题),但我为我正在参与的一个第三方项目安装了Java8。现在,我似乎无法在Windows 7 x64中安装Java 8,并且仍然默认使用Java 7: C:\>"%JAVA_HOME%\bin\java.exe" -version java version "1.7.0_55" Java(TM) SE Runtime Environment (build 1.7.0_55-b13) Java HotSpot(TM) 64

我通常仍然在我所有的编码项目中使用Java7(这是一个公司的“政治”问题),但我为我正在参与的一个第三方项目安装了Java8。现在,我似乎无法在Windows 7 x64中安装Java 8,并且仍然默认使用Java 7:

C:\>"%JAVA_HOME%\bin\java.exe" -version
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)

C:\>java.exe -version
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
如您所见,JAVA_HOME完全被忽略

我还在路径中使用了Java,使用“%Java\u HOME%\bin”,当我在DOS框中检查路径时,它正确地解析为Java 7,但这仍然没有什么区别

我检查了“Java控制面板”(不确定这是否会影响默认的命令行Java版本)。在“Java”选项卡的“查看…”按钮下,您可以看到“已注册”的Java版本。我可以在“用户”选项卡下添加所有版本,但在“系统”下只有Java8,无法更改

是我遗漏了什么,还是Oracle只是让Java 7无法使用,除非我卸载Java 8?我不想在任何地方都指定“源”和“目标”,我甚至不知道是否可以在使用Java的任何地方指定它


编辑:我做的是卸载所有Java。然后安装最新的Java7(86和x64),然后安装最新的Java8(86和x64)。在我这么做之后,我注意到x64 JDK不见了。看来是Java8杀了它。因此,我在JDK8x64之后重新安装了JDK7x64。尽管如此,JDK7 x64似乎并没有“替换”复制到“Windows”目录本身的“java.exe”(我认为这就是问题所在)。

Windows和Unix都使用它们的
路径
环境变量查找程序。您的
Windows\System32
中有一个
java.exe
,它出现在您的“首选”java版本之前


将路径更改为所需的路径,或者在需要其他版本时指定完整路径。

您可以使用-version:选项从命令行选择JRE版本

> java -version:"1.7" MyClass
如果安装正确,应选择1.7 JRE

正确安装的JRE列表位于注册表中,请参阅注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment  (32bit)
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment  (64bit)
如果希望使用不同于最新版本的默认版本,可以在此处设置“CurrentVersion”


不要修改您的路径以指向特定的JRE,让Windows/system32中的特殊java.exe来完成这项工作。

当您安装jdk8时,它会添加如下条目

C:\ProgramData\Oracle\Java\javapath

路径的开头环境变量,删除此项应该可以解决您的问题。

2个步骤 1. 将注册表项更改为指向1.7

2. 将
java.exe、javaw.exe和javaws.exe从java 1.7版本复制到
Windows\System32
文件夹中 (由于java 1.8的相应文件已经存在,您可能需要使用管理员权限进行覆盖)

3. (OOps实际上不需要第三步) 打开一个新的cmd窗口并检查
java-version

看起来您必须检查路径中java\u HOME变量的位置,路径是从左到右计算的。一个技巧是在路径的开始处配置所有Java系统变量

PATH = %M2_HOME%\bin;%JAVA_HOME%\bin;C:\ProgramData\Oracle\Java\javapath;...
可能这就是为什么在这样做之后:

- java -version
你得到的是:

- java version "1.8.0_05"

因为路径中还有其他区域指向其他java.exe,例如C:\Windows\System32或C:\ProgramData\Oracle\java\javapath等。

我必须对其进行两次更改才能正常工作:

  • 将注册表项“Software\JavaSoft\Java Runtime Environment”\CurrentVersion从1.8更改为1.7
  • Java 8安装为PATH环境变量“C:\ProgramData\Oracle\Java\javapath”添加了一个新条目。我从路径中删除了此条目。

  • 您可以更改path环境变量,但也可以删除两个版本的Java,先安装Java 8,然后安装Java 7。您使用什么来编程和编译?在那里定义您的java\u主页。我想您错过了这一点:“我的路径中也有java,使用“%java\u home%\bin”,“关于“删除/重新安装”,我将添加我所做的事情。@DavidBrossard在“Windows环境”中设置java\u home或java.exe的路径都没有任何效果,所以我怀疑在Maven或Ant的批处理文件中执行同样的操作是否会产生不同的结果;只是更改路径,然后直接处理注册表比较省事。我知道。。。但是,如果您使用文档中的命令行选项,就不必弄乱注册表。我也有同样的问题。你能帮我吗?你是如何改变道路的?请向我解释一下,您在这行中做了什么,将路径更改为您需要的路径,或者在需要其他版本时指定完整路径。