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

6

我通常在我的编码项目中仍使用Java 7(这是公司的“政治”问题),但我安装了Java 8,用于我正在参与的第三方项目。现在,似乎我不能在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_HOME%\bin”,当我在DOS窗口中检查路径时,这些路径正确解析为Java 7,但仍然没有任何区别。

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

我是否漏了什么,还是Oracle让我无法使用Java 7,除非我卸载Java 8?我不想随处指定“源”和“目标”,我甚至不知道在使用Java的地方是否可能随处指定它们。

编辑:我所做的就是卸载所有Java。然后安装了最新的Java 7(86和x64),然后是最新的Java 8(86和x64)。之后我注意到x64 JDK消失了。似乎Java 8杀死了它。所以我重新安装了JDK 7 x64,安装JDK 8 x64之后再安装。仍然,JDK7 x64似乎没有“替换”复制到“Windows”目录本身的“java.exe”(我认为这是问题所在)。


你可以更改你的路径环境变量,但也可以删除两个版本的Java,先安装Java 8,然后再安装Java 7。 - MadProgrammer
你用什么来编程和编译?在那里定义你的java_home。 - David Brossard
我认为你错过了这一点:“我也将Java添加到了路径中,使用“%JAVA_HOME%\bin”。”关于“de/re-installing”,我会在问题中补充我所做的事情。 - Sebastien Diot
@DavidBrossard 在“Windows环境”中设置JAVA_HOME或java.exe路径都没有任何效果,因此我怀疑在Maven或Ant的批处理文件中进行相同操作也不会有不同的结果。 - Sebastien Diot
6个回答

10
当您安装jdk8时,它会添加以下条目:

C:\ProgramData\Oracle\Java\javapath

到您的PATH环境变量的开头,删除此条目应该解决您的问题。

3
您可以使用命令行选项-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”。

请参见http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html#options

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


我还没有尝试过这个,但它听起来也像是一个解决方案;只是更改路径比直接操作注册表麻烦得多。 - Sebastien Diot
我知道......但是如果你使用文档中记录的命令行选项,就不必去动注册表。 - RealHowTo

2

Windows和Unix都使用它们的PATH环境变量来查找程序。你在Windows\System32中有一个java.exe,它比你“首选”的Java版本更先出现。

改变PATH为你需要的路径,或者在需要不同版本时指定完整路径。


我有同样的问题。你能帮我吗?你是如何更改路径的?只需解释一下你通过这行代码做了什么:将路径更改为所需路径,或在需要不同版本时指定完整路径。 - Rushi

1

看起来您需要检查JAVA_HOME变量在PATH中的位置,PATH从左到右进行评估。给您一个提示,可以在PATH的开头完成所有Java系统变量配置。

PATH = %M2_HOME%\bin;%JAVA_HOME%\bin;C:\ProgramData\Oracle\Java\javapath;...

也许这就是为什么在执行以下操作之后:

- java -version

you are getting this:

- java version "1.8.0_05"

因为您的PATH中有其他指向其他java.exe的路径,例如C:\Windows\System32或C:\ProgramData\Oracle\Java\javapath等。


1

2 Steps

1

将注册表键**HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion**更改为指向1.7版本。

2

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

3

打开一个新的cmd窗口并检查java -version


0

我必须做两个更改才能使其工作:

  1. 将注册表键'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'从1.8更改为1.7
  2. Java 8安装会向PATH环境变量添加一个新条目'C:\ProgramData\Oracle\Java\javapath'。我从PATH中删除了此条目。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接