我必须在 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:
- 从 %PATH% 中删除
C:\ProgramData\Oracle\Java\javapath;
- 将
C:\Program Files\Java\jre7\bin;
添加到 %PATH%
我不喜欢这个解决方案,因为它与以前的配置不同,而且我每次都必须手动从 PATH 中删除该值。
最佳答案
很高兴知道 Oracle 推荐的方式是什么,但找不到此信息。以下可能是一个合理的hack解决方法(我过去使用过类似的方法)。
创建连接(或符号链接(symbolic link)):
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
中找到它(从路径) 。可执行文件知道它所在的目录,并在那里查找其他文件(jar、DLL 等)。由于 jre
现在是 jre7
的别名,因此它将找到正确的别名。因为它找到了它们,所以它不会在注册表中查找。
当然,您可以创建一个批处理文件或快捷方式图标,其中包含在两个版本之间切换的命令。
关于java - 在 Win10 上切换 java 版本 - 注册 key 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40108491/