为什么感觉环境变量没配错,JDK包没有问题,但是javac命令运行失败(环境变量的一些思考)
个人错误速看
我是JDK包没问题,环境变量配置在了用户变量中,导致优先级更高的系统变量的Path
中有一个其他文件夹的javac.exe
文件路径,所以每次都执行那个错误的javac.exe
,如果问题和我一样可以接着往后看。
环境变量的作用
- 首先在
jdk-xxx\bin
下运行javac -version
是绝对可行的,因为javac.exe
文件就存放在该目录之下。 - 而要在别的目录下同样用到该命令,就必须配置环境变量
Path
中的路径,添加X:\xxx\jdk=xxx\bin
这个路径。 - 在其他目录下执行
javac -version
命令,首先系统寻找该目录下是否存在名为javac
的可运行文件,如果没有再逐一去环境变量Path
中寻找。
环境变量的遍历顺序
很多博客中说到如果你验证了JDK包没有问题,环境变量一定要注意将Path
路径中的X:\xxx\jdk=xxx\bin
路径往上移动到最上层,但是没有讲其中原理,我想讲的是两个注意的问题。
- 移到最上面应该是指下方即本机全局的系统变量
Path
的最上方,而不是用户变量的Path
的最上方。打开cmd命令行窗口,输入path
命令是可以发现在遍历path路径时系统变量优先于用户变量。
- 当发现把路径上移就能解决问题的时候得想想其背后的原理,系统既然没有遍历到你需要的正确路径,那就是因为比正确路径的优先级更高的路径中存在有
javac.exe
文件。我的话就是下面图片中框起来的那个路径中有javac.exe
文件。