java -version,javac -version 不一致的问题
根据
http://www.oschina.net/question/942785_103000
总结.
原因:电脑里安装了多个JDK.Java -version不是path变量中设置的版本
解决:将path环境变量中的java的path放在最前面.
分析:1.JRE安装时,会将java.exea安装到C:\WINDOWS\system32目录下.
2.cmd窗口执行命令时,先从当前目录搜索,然后按照环境变量path设置的路径依次查找.
3.于是安装多个JDK后,system32下保留的java.exe版本可能和变量中设置的不一样.(就我个人安装jdk的顺序,安装两个JDK时,system32下保留了高版本的java.exe).如果PATH变量中C:\WINDOWS\system32写在Java变量前面,执行java -version命令时,执行的是system32中的命令.
注1:
根据我简单的测试, java 的path不是必须放在最前面,而是放在所有用到javapath变量的前面.如下图中,我的Oracle用到javapath,将java路径放在其后面就有问题,放在它上面(实际是所有用到javapath变量的前面),就没问题.所以还是放到最前面比较保险.
注2:
其他解释中提到安装jdk时在注册表生成
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Development Kit
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Plug-in
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment
同时,JDK安装程序将会把java.exe,javaw.exe,javaws.exe这3个可执行文件拷贝 到%SystemRoot%\system32目录下,
通过删除system32下的java.exe(和删除注册表)来解决.
我试了删除java.exe,不行.注册表我不敢动,没试.