【问题标题】:Changing between Java8 and Java7 Environments在 Java8 和 Java7 环境之间切换
【发布时间】:2015-03-17 17:15:05
【问题描述】:

我正在尝试在 Java7 和 Java 8 环境之间进行切换。我创建了以下新环境变量:

JAVA7_HOME - java 7 location
JAVA8_HOME - java 8 location
JAVA_HOME

然后我将 JAVA_HOME 设置为 %JAVA8_HOME% 或 %JAVA7_HOME%。在路径中我有

%JAVA_HOME%\bin;REST OF PATH

似乎无论我将 JAVA_HOME 设置为什么,它都不会改变 java -version 的结果,即使对于新会话也是如此。

我们怎样才能拥有两个独立的 Java 环境,同时又能轻松地在它们之间进行切换?我尝试将所有内容设置为正确的路径,包括:

HKEY_CURRENT_USER\Environment JAVA_HOME
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment CurrentVersion

甚至更改符号链接以指向我们想要的版本。我们创建了批处理脚本来完成这一切,我们创建了 powershell/,net 来完成它然后广播,尝试设置它并重新启动资源管理器。在 7 和 8 之间切换似乎是不可能的。

有人知道如何解决这个问题吗?

【问题讨论】:

  • 如果您在 64 位 Windows 上使用 32 位 JRE,则需要修改 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment "CurrentVersion"

标签: java windows environment-variables


【解决方案1】:

基本问题是通过命令行更改环境变量由于某种原因不是永久性的。您必须通过 UI 设置新值。

【讨论】:

    【解决方案2】:

    我曾经做过以下事情:

    1. 将 jdk8 和 jdk7 都放在您的路径中(首先将您想要的设置为“默认”)。
    2. 在 jdk8 bin/ 目录中查找 java.exejavac.exe。复制名称为 java8.exejavac8.exe 的可执行文件。
    3. 在 jdk7 bin/ 目录中执行相同操作,并将二进制文件复制到 java7.exejavac7.exe

    现在您可以调用 java/javac、java7/javac7 和 java8/javac8。 (我不确定为什么有人需要 JAVA_HOME,我从来没有设置它。) jar.exe 等其他可执行文件将取自默认 jdk(路径中的第一个),这没关系,因为无论哪个 jar.exe 制作它们,您的 JAR 文件都是相同的。

    然后继续配置你需要的应用程序,比如eclipse。

    希望您的构建工具也可以被告知要使用哪些可执行文件。如果没有,它将使用默认值。

    这样,你也可以实现疯狂的配置。例如,假设您希望 jdk7 作为默认值,但希望始终使用 java8 javadoc。然后只需将 jdk7 中的 javadoc.exe 重命名为 javadoc-dontuse.exe。这样,当你输入javadoc.exe或者某些应用调用它时,它不会在(默认)jdk7中找到它,并继续在jdk8 bin中搜索。

    【讨论】:

    • 我想我找到了问题所在。也许。 Windows 似乎无法处理指向另一个路径变量的一个路径变量。那就是它似乎不喜欢 Path 指向 %JAVA_HOME%JAVA_HOME 指向 %JAVA7_HOME% 的事实。只要我将%JAVA7-HOME%%JAVA8_HOME% 更改为物理目录,就很高兴。
    猜你喜欢
    • 1970-01-01
    • 2018-04-27
    • 2018-11-20
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 2018-05-01
    相关资源
    最近更新 更多