java - 在 Win10 上切换 java 版本 - 注册 key 问题

标签 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% 中删除 C:\ProgramData\Oracle\Java\javapath;
  2. 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/

相关文章:

Excel:计算金额 - 一个单元格 (58391) 中的数字到另一个单元格 (5+8+3+9+1)

Java 使用 Java 8 时间库将 UTC 转换为 PDT/PST

java - 从 .txt 调用列表作为数组并需要显示平均值

java - 如何检查某个进程是否正在运行 - Linux 上的 java

java - 将 InputStream 转换为固定长度字符串的 Stream<String>

Windows 10 上的 Bash 无法正常工作

python - Pyinstaller编译的exe找不到绝对路径的文件

Java,嵌套if、if/else语句添加单词

java - 如何将单个 POJO 类映射到多个表

java - 将订阅者添加到单个观察值