今天有个小伙伴提了个问题:他在本地调试代码,编译和运行时,出现了版本不一致的问题。明明java_home配置没有问题,为什么会出现不一样的版本?
我先简单重现下当时的问题:首先,写了一个简单的java文件,当然,语法没有问题,编译也通过了,但运行时报错了
既然这样,咱就来看看版本
那么,问题来了,javac版本号11.0.5,java版本号1.8.0_152
为什么呢?不妨先来看看java_home的配置,是jdk1.11.0.5。那这个1.8.0_152是哪里来的?
因为这台机器上同时安装了jdk11.0.5和1.8.0_152,并且在PATH变量的配置中,C:WINDOWSsystem32目录在%JAVA_HOME%bin之前。在Windows命令行下执行命令时,先从当前目录搜索,然后按照PATH设置的路径依次查找命令,而JRE安装时会将java.exe安装到C:WINDOWSsystem32目录下,所以执行java -version命令时,查看的是jre的版本,而javac -version时查看的jdk的版本。
原因知道了,如何解决?
解决方案:
将%JAVA_HOME%bin加在PATH变量的最前面,执行java -version和javac -version,均为11.0.5版。
结果: