在Java8和Java7环境之间更改

在Java8和Java7环境之间更改,java,windows,environment-variables,Java,Windows,Environment Variables,我正在尝试在Java7和Java8环境之间切换。我创建了以下新的环境变量: 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版本的结果,即使对于新会话也是如此 我们如何在两个独立的java

我正在尝试在Java7和Java8环境之间切换。我创建了以下新的环境变量:

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版本的结果,即使对于新会话也是如此

我们如何在两个独立的java环境之间轻松切换?我已尝试将所有内容设置为正确的路径,包括:

HKEY_CURRENT_USER\Environment JAVA_HOME
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment CurrentVersion
甚至更改符号链接以指向我们想要的版本。我们创建了批处理脚本来完成这一切,我们创建了powershell/,net来完成这一切,然后进行广播,尝试设置所有内容并重新启动explorer。。在7和8之间切换似乎是不可能的


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

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

我过去经常执行以下操作:

  • 将jdk8和jdk7放在您的路径中(将您想要的作为“默认”放在第一位)
  • 在jdk8 bin/目录中查找
    java.exe
    javac.exe
    。复制名为
    java8.exe
    javac8.exe
    的可执行文件
  • 在jdk7 bin/目录中执行同样的操作,并将二进制文件复制到
    java7.exe
    javac7.exe
    现在可以调用java/javac、java7/javac7和java8/javac8。 (我不知道为什么会有人需要JAVA_回家,我从来没有设置过。) 其他可执行文件(如jar.exe等)将取自默认的jdk(路径中的第一个),这没关系,因为无论是哪个jar.exe创建的jar文件都是相同的

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

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


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

    如果您在64位Windows上使用32位JRE,则需要修改HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java运行时环境“CurrentVersion”我想我发现了问题所在。大概Windows似乎无法处理指向另一个路径变量的一个路径变量。也就是说,它似乎不喜欢路径指向
    %JAVA\u HOME%
    ,而
    JAVA\u HOME
    指向
    %JAVA7\u HOME%
    。只要我将
    %JAVA7-HOME%
    %JAVA8\u HOME%
    更改为一个物理目录,我就很高兴了。