繁体   English   中英

在Win10上切换Java版本-注册密钥问题

[英]Switch java version on Win10 - issue on register key

我必须在Windows 10上的Java 7和Java 8之间切换。

我都安装了:

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

在我的PATH中有一个通用路径(包含指向Java可执行文件的链接)。 这是所有eviroment变量中唯一的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. 删除C:\\ProgramData\\Oracle\\Java\\javapath; 来自%PATH%
  2. 添加C:\\Program Files\\Java\\jre7\\bin; 到%PATH%

我不喜欢这种解决方案,因为它与以前的配置不同,并且因为我每次都需要手动从PATH中删除值。

很高兴知道Oracle推荐的方式是什么,但是找不到此信息。 下面可能是一个合理的解决办法 破解 (我已经在过去使用类似的方法)。

创建一个结点(或符号链接):

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

然后从您的PATH删除C:\\ProgramData\\Oracle\\Java\\javapath并将其替换为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的别名,它将找到正确的别名。 而且因为它找到了它们,所以它不在注册表中查找。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM