在Win10上切换java版本 - 在注册码上发布

时间:2016-10-18 12:37:50

标签: java java-8 windows-10

我必须在Windows 10上切换Java 7和Java 8.

我已安装:

C:\Program Files\Java\jre1.8.0_91
C:\Program Files\Java\jre7

在我的PATH中有一个通用路径(包含指向java可执行文件的链接)。这是所有环境变量中唯一的java值:

Path=C:\ProgramData\Oracle\Java\javapath;..

当我想运行Java 8时,我创建了3个到C:\Program Files\Java\jre1.8.0_91的实际链接(使用命令mklink /H [link] [origin]):

C:\ProgramData\Oracle\Java\javapath\java.exe   >> C:\Program Files\Java\jre1.8.0_91\bin\javapath\java.exe  
C:\ProgramData\Oracle\Java\javapath\javaw.exe  >> C:\Program Files\Java\jre1.8.0_91\bin\javapath\javaw.exe 
C:\ProgramData\Oracle\Java\javapath\javaws.exe >> C:\Program Files\Java\jre1.8.0_91\bin\javapath\javaws.exe

使用此配置可以

但是,当我想运行Java 7时,我创建了3个到C:\Program Files\Java\jre7的真实链接:

C:\ProgramData\Oracle\Java\javapath\java.exe   >> C:\Program Files\Java\jre7\bin\javapath\java.exe  
C:\ProgramData\Oracle\Java\javapath\javaw.exe  >> C:\Program Files\Java\jre7\bin\javapath\javaw.exe 
C:\ProgramData\Oracle\Java\javapath\javaws.exe >> C:\Program Files\Java\jre7\bin\javapath\javaws.exe

当我尝试运行java时,它不起作用!我收到以下错误:

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 7:

  1. 从%PATH%
  2. 中删除C:\ProgramData\Oracle\Java\javapath;
  3. C:\Program Files\Java\jre7\bin;添加到%PATH%
  4. 我不喜欢这个解决方案,因为它与以前的配置不同,因为我每次都要从PATH中手动删除该值。

2 个答案:

答案 0 :(得分:2)

很高兴知道Oracle的推荐方式是什么,但无法找到这些信息。以下可能是一个合理的 hack 解决方法(我过去使用过类似的方法)。

创建联结(或符号链接):

mklink /j "C:\Program Files\Java\jre" "C:\Program Files\Java\jre1.8.0_102"

然后从C:\ProgramData\Oracle\Java\javapath移除PATH,并将其替换为C:\Program Files\Java\jre\bin

现在,只要您想切换到Java 7,只需执行:

rd "C:\Program Files\Java\jre"
mklink /j "C:\Program Files\Java\jre" "C:\Program Files\Java\jre7"

这是有效的,因为当您现在键入java时,它会在C:\Program Files\Java\jre\bin\java.exe中找到它(来自PATH)。可执行文件知道它所在的目录,并查找其他文件(jar,DLL等)。由于jre现在是jre7的别名,因此它会找到正确的别名。因为它找到了它们,所以它不会在注册表中查找。

当然,您可以创建一个批处理文件或快捷方式图标,其中包含在两个版本之间切换的命令。

答案 1 :(得分:0)

我不是100%,但我相信您可能必须将JAVA_HOME变量设置为您想要使用的版本。