【问题标题】:How to install Java 8 on machine with other Java versions如何在具有其他 Java 版本的机器上安装 Java 8
【发布时间】:2015-10-06 06:34:58
【问题描述】:

我在其他几个版本的机器上安装了 Java 8 (jdk-8u60-windows-x64.exe)。

安装后我看到以下消息

d:\Userprofiles\user>java -version
Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'
has value '1.8', but '1.7' is required.
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.

我可以将JAVA_HOME 更改为新位置,但这并不能解决上述消息。

当我编辑注册表并将多个注册表项中的 1.8 更改为 1.7 时,我再次获得了有效的配置。但这仍然是1.7.

更改JAVA_HOME 似乎没有任何效果。当我将其更改为新安装的 JDK 时

d:\Userprofiles\user>java -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)

d:\Userprofiles\user>echo %JAVA_HOME%
D:\Program Files\Java\jdk1.8.0_60

我需要做什么才能让 1.8 在我的机器上运行? JAVA_HOME 现在似乎已经过时了,我应该更改注册表吗?我应该如何更改注册表以便获取 1.8 版本?

【问题讨论】:

  • 谁说JAVA_HOME 已经过时了?如果我是你,我会卸载 both Java 7 和 8,然后从头开始将它们重新安装到 separate 目录中。在此之后,配置您的环境变量以选择一个运行。
  • 你为什么又问同样的问题?
  • Java 从未使用过 JAVA_HOME。这个变量被几个工具使用,比如 Ant、Maven、Gradle,但不是 Java 本身。您必须修改 PATH 以指向所需的 jdk/bin 目录。

标签: java java-8


【解决方案1】:

仅仅引入%JAVA_HOME% 的值是不够的(实际上,Java 并不关心是否存在这样的环境变量)。

你要做的就是将%JAVA_HOME%/bin目录追加到Path环境变量中,这样就可以得到与%JAVA_HOME%版本匹配的java.exe,而不必写@987654326的完整路径@你要触发的可执行文件。

所以,要么这样做:

  • %JAVA_HOME% 环境变量设置一个值
  • %JAVA_HOME%/bin 附加到Path 环境变量中

或者只是

  • <the-java-home-directory>/bin 附加到Path 变量。

就个人而言,我更愿意为 JAVA_HOME 保留一个值,因为 Maven、Hadoop 等工具需要它。

【讨论】:

  • 问题确实是我的Path 变量。 JAVA_HOME 不见了。
【解决方案2】:

您可以安装任意数量的 JDK,甚至不需要在 PATH 中安装它们,也不需要设置 JAVA_HOME。

在 PATH 中找到的第一个将是默认的。记得只安装JDK,不要安装JDK自带的JRE,即安装时不要选择第三个选项。

我已经安装了 9 JDK,我可以运行所有这些JDK,而无需进行任何更改。您所要做的就是限定可执行文件:

C:\>prog\java32\jdk1.4.2_19\bin\java.exe -version
java version "1.4.2_19"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_19-b04)
Java HotSpot(TM) Client VM (build 1.4.2_19-b04, mixed mode)

C:\>prog\java32\jdk1.5.0_22\bin\java.exe -version
java version "1.5.0_22"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
Java HotSpot(TM) Client VM (build 1.5.0_22-b03, mixed mode)

C:\>prog\java32\jdk1.6.0_45\bin\java.exe -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) Client VM (build 20.45-b01, mixed mode, sharing)

C:\>prog\java32\jdk1.7.0_79\bin\java.exe -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) Client VM (build 24.79-b02, mixed mode, sharing)

C:\>prog\java32\jdk1.8.0_51\bin\java.exe -version
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) Client VM (build 25.51-b03, mixed mode, sharing)

C:\>prog\java64\jdk1.5.0_22\bin\java.exe -version
java version "1.5.0_22"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_22-b03, mixed mode)

C:\>prog\java64\jdk1.6.0_45\bin\java.exe -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

C:\>prog\java64\jdk1.7.0_79\bin\java.exe -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

C:\>prog\java64\jdk1.8.0_51\bin\java.exe -version
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

这是单个命令提示符中的输出,无需设置 PATH。

【讨论】:

  • 您需要 32 位和 64 位副本的任何特殊原因?只是好奇。
  • @Gimby 只是为了测试。
  • “在 PATH 中找到的第一个将是默认的” - 作为补充,在 Windows 上,Java 运行时安装会在 Windows 系统文件夹中转储一些可执行文件能够谈论“默认Java”。如果您安装了多个 Java 安装,这可能会导致一些混乱,因为路径中的系统文件夹可能会与首先找到的内容混淆。这就是为什么我自己把我想成为默认的 Java 放在 Path 的最前面,甚至在任何 windows 文件夹之前。
猜你喜欢
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多