我必须在Windows 10上切换Java 7和Java 8。
我已经安装了:
C:Program FilesJavajre1.8.0_91
C:Program FilesJavajre7
在我的PATH中有一个通用路径(其中包含到java可执行文件的链接)。这是所有环境变量中唯一的java值:
Path=C:ProgramDataOracleJavajavapath;..
当我想运行Java 8时,我创建了3个到C:Program FilesJavajre1.8.0_91
的真实链接(使用命令mklink /H [link] [origin]
):
C:ProgramDataOracleJavajavapathjava.exe >> C:Program FilesJavajre1.8.0_91binjavapathjava.exe
C:ProgramDataOracleJavajavapathjavaw.exe >> C:Program FilesJavajre1.8.0_91binjavapathjavaw.exe
C:ProgramDataOracleJavajavapathjavaws.exe >> C:Program FilesJavajre1.8.0_91binjavapathjavaws.exe
使用这个配置, 可以工作。
但是,当我想运行Java 7时,我创建了3个真正的链接到C:Program FilesJavajre7
:
C:ProgramDataOracleJavajavapathjava.exe >> C:Program FilesJavajre7binjavapathjava.exe
C:ProgramDataOracleJavajavapathjavaw.exe >> C:Program FilesJavajre7binjavapathjavaw.exe
C:ProgramDataOracleJavajavapathjavaws.exe >> C:Program FilesJavajre7binjavapathjavaws.exe
当我尝试运行java, 它不工作!得到以下错误:
Error: Registry key 'SoftwareJavaSoftJava 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:ProgramDataOracleJavajavapath;
- 添加
C:Program FilesJavajre7bin;
到%PATH%
我不喜欢这个解决方案,因为它与以前的配置不同,因为我每次都要手动从PATH中删除值。
如果知道Oracle的推荐方法是什么就好了,但是没有找到相关信息。下面可能是一个合理的hack的解决方法(我过去使用过类似的方法)。
创建连接(或符号链接):
mklink /j "C:Program FilesJavajre" "C:Program FilesJavajre1.8.0_102"
然后将C:ProgramDataOracleJavajavapath
从PATH
中删除,并将其替换为C:Program FilesJavajrebin
。
现在,当你想切换到Java 7时,只需执行:
rd "C:Program FilesJavajre"
mklink /j "C:Program FilesJavajre" "C:Program FilesJavajre7"
这是有效的,因为当您现在输入java
时,它将在C:Program FilesJavajrebinjava.exe
中找到它(从PATH)。可执行文件知道它在哪个目录中,并在那里查找其他文件(jar, dll等)。由于jre
现在是jre7
的别名,它将找到正确的。因为它找到了它们,所以它不会在注册表中查找。
当然,您可以创建一个批处理文件或快捷图标,其中包含在两个版本之间切换的命令。
我不是100%,但我相信您可能必须将JAVA_HOME变量设置为您想要使用的版本