此博客链接:https://www.cnblogs.com/ping2yingshi/p/14930400.html
1.问题描述
window10安装过jdk后,当编译运行java代码时,java和javac的版本不一致。java是1.8.0_181,而javac是16.0.1,如下图所示。
2.出现原因
我安装jdk版本是16.0.1的版本,可是在我电脑上还有一个jre1.8.0_181。
3.解决方案
1.把path 里%JAVA_HOME%in放在path变量的最前面。(尝试未成功)
2.在系统环境变量中添加path,并添加JAVA_HOME%in。(尝试成功)
4.重现java和javac版本不一致问题
4.1回退到原来的版本
1.把3中1的%JAVA_HOME%in不放在path变量的最前面,放到原来倒数第二的位置。
2.删除path中添加的JAVA_HOME%in。
3.在控制台中输入java和javac,java和javac的版本是一样的,不是预期结果。实验失败。
4.2重新下载两个版本的jdk,重现java和javac版本不一致问题
1.在官网上下载1.8.0版本的jdk。
2.解压安装jdk。详情参见博客:https://www.cnblogs.com/ping2yingshi/p/14930839.html
3.在环境变量中分别配置两个版本jdk的路径。
4.手动切换不同版本的jdk,在命令行中查看java和javac的版本,发现切换后的java和javac版本是和配置的JAVA_HOME中的jdk版本是致的,没有出现java和javac版本不一致问题。实验失败。
4.3请教师妹
4.3.1重现问题
师妹在自己电脑上,先安装了jre,然后安装了jdk,先把我的问题重现了,然后解决这个问题,最后又重现了问题。
4.3.2我本人电脑重现问题
过程
1.师妹怀疑我C盘里有java.exe,先让我在C:WindowsSystem32找java.exe,但是在我电脑的C:WindowsSystem32没有找到java.exe。
2.对比我和师妹的环境变量,发现我电脑的系统环境中没有path。
3.经过在c盘搜索java.exe文件,虽然在c盘的某个目录下找到了,但是师妹认为这不是我们需要的版本。
4.重新下载一个jre,观察默认安装路径,发现默认安装路径还是在C:WindowsSystem32下。
5.在命令行输入where java,显示不是内部命令。而且此时的java和javac版本是一样的。(这里不是在C:WindowsSystem32下输入的命令)
6.到system32的路径下输入where java,显示了java命令所在目录。
7.再次查看java和javac的版本,发现Java和javac版本不一致。
8.在电脑的系统变量中配置path路径,没有在C:WindowsSystem32下查看Java和Javac版本。发现两个版本不一致。
9.将path变量中的顺序更改,将%JAVA_HOME%in和%JAVA_HOME%jrein放在C:Windowssystem32之前,如下图所示。
10.再次查看java和Javac版本,发现Java和javac版本是一样的。
4.4总结
4.4.1java和javac版本不一样的原因
出现Java和Javac版本不一样的原因是,系统会先到path路径下按顺序找相应文件,而jre1.8.0是在系统所在的路径下,被优先搜索到,所以使用了C盘下的jre。
4.4.2不能重现问题的原因
我不能重现java和javac版本不一样问题的原因是,当我在系统环境变量下添加了path路径,优先搜索D盘下的jre。后来不知道什么操作把C盘下的java.exe等可执行文件删除了,所以再次删除path路径后,执行命令,C盘下已经不存在java.exe等可执行文件了,然后去搜索了D盘下的jre可执行文件。