我的机器上安装了多个java版本(os Windows 8)。我有java 1.6,1.7& 1.8安装在我的机器上。我只为版本1.6设置了路径环境变量,如Java_Home&作为Java_Home8的1.8。
但奇怪的是,当我在命令提示符下键入java -version时,它指的是jdk 1.7版本。但奇怪的是,我查看了路径环境变量,我找不到导致jdk 1.7安装文件夹的路径。我没有为jdk 7创建任何单独的路径变量。我也没有将它包含在路径中。但是当我打开命令提示符并输入java -version时,它仍然指向java 7.下面是路径变量的内容
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jre1.8.0_60\bin;C:\Program Files\Java\jre1.6.0_07\bin;%M2%;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Java\jdk1.6.0_07\bin;C:\Program Files\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;
有人可以解释这是怎么发生的。我的假设是当我执行java -version命令时,它引用路径变量中提供的版本。但事情并非如此。你能解释一下它的原因以及它如何选择/显示java 7版本。
答案 0 :(得分:3)
Windows上的Java安装程序还会将java.exe
,javaw.exe
和javaws.exe
放入目录
C:\ Windows \ System32下
至少,Java 7做到了这一点。 Java 8将相同的文件放入
C:\ ProgramData \甲骨文\爪哇\ javapath
并将此目录放入PATH环境变量中。
上面提到的系统directoy是PATH变量中提到的第一个目录:%SystemRoot%\system32
。因此,您可以根据需要将尽可能多的Java二进制目录放入PATH变量中......只需调用java ...
将始终从系统目录启动程序 - 我想这将是Java 7。
解决方案?从系统目录中删除它们。哦,并清理一下你的PATH变量。提到了多个Java目录。通常,您只需要一个。如果您暂时需要其他Java,请参阅@ slartidan的答案,了解如何操作。
答案 1 :(得分:0)
在Windows中,JRE的最后一次设置通常在PATH环境变量中注册。
JAVA_HOME被许多发射器等使用,但不会更改windows apllication启动(例如,双击jar文件或在命令提示符下键入java)。
我建议始终指定java的完整路径,如下所示:
C:\Program Files\Java\jdkxy\bin\java - version
或
%JAVA_HOME8%\bin\java -version
这样做的好处是,您甚至不必再安装java了。只需将您的一个java文件夹复制到任何其他PC,然后使用完全限定的路径运行java。