文章目录
前言
当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到 path 中指定的路径去找。用户通过设置环境变量,来更好的运行进程。
https://blog.csdn.net/chengyq116/article/details/105900122/
安装教程
- java8:
https://blog.csdn.net/m0_53623945/article/details/123978985
- java17:
https://blog.csdn.net/Mortal_ApeBoys/article/details/123610132
一、java -version ‘java’ 不是内部或外部命令,也不是可运行的程序;
注意修改环境变量后,原cmd是不生效的,要重新打开一个cmd
1、检查jdk文件能不能正常运行
- 找到自己的安装路径,然后进入这个bin目录下。
- 进入bin目录后,在目录这一栏输入
cmd
然后回车
- 然后输入
java -version
,看看能不能正常输出版本信息。如果不能,可能是下的东西有问题,建议删了重下一个
2、检查环境变量
- 打开一个cmd窗口,输入
echo %path%
。检查发现是这个path里面的变量名写错了,没有进行正确转换。修改成正确的变量名就好了。
- 修改后发现变量名对了,但是还是报错。
- 原因可能是环境变量的地方配置错了。系统变量的
path
没办法读取到用户变量的JAVA_HOME
。
解决方案:你可以把他们放在同一个组里面。或者把JAVA_HOME放在系统变量里,%JAVA_HOME%放在用户变量的path里。
二、切换java版本后,java -version 还是输出原java版本的问题处理
1、原因
- 没有重新打开cmd,重新打开一个就好了
- 写错了或者是本身就没办法运行,可以参考一中的方法检查一下
- path 中有多个java可执行程序文件路径
2、多java可执行程序文件路径,处理方法
在Windows环境中,如果PATH变量中有多个同名的执行程序,系统会选择第一个找到的执行器来执行。(找的顺序就是 echo %path% 输出的那一串东西,从前往后找)
- 首先使用
echo %path%
查看path有没有问题,是不是正确的,有没有你修改后的 java 版本信息。 - 查看path中是否有其他java可执行程序的文件路径在你目标路径前面,如果有,移到你的期望执行程序后就可以了。比如
- Oracle 的 javapath
C:\Program Files (x86)\Common Files\Oracle\Java\javapath
-JAVA8的默认配置
C:\Program Files\Common Files\Oracle\Java\javapath
-JAVA17的默认配置 - JRE
配置的JRE路径 - 系统变量和用户变量的先后问题
用户变量 path 内容会跟在系统变量 path 内容的后面
。查看你的系统变量是不是没改。 - 可能还有其他的,你可以都去对应目录下试一试,参考一里面的
- Oracle 的 javapath
- 修改完路径后,再使用
echo %path%
查看一下有没有改成功,顺序是不是你期望的顺序。
三、其他
1、修改jre文件名后报错
https://blog.csdn.net/Astartbangbang/article/details/88911226
2、系统变量和用户变量
https://blog.csdn.net/chengyq116/article/details/105900122/
- 普通变量
如果在用户变量和系统变量中创建同名变量,那么 Windows 会将用户变量覆盖系统变量
。在 cmd 中输出的是用户变量中该变量的值。
对于普通变量,用户环境变量优先级高于系统环境变量。系统会先检查用户变量,之后再检查系统变量。
- path 变量
1. 环境变量不区分大小写,path / PATH / Path 表示指定可执行文件的搜索路径。
2. echo %path% 可以得到 path 变量的值 (系统变量中的值与用户变量中的值的组合),用户变量 path 内容会跟在系统变量 path 内容的后面
。
3. 对于 Path 变量,系统环境变量优先级高于用户环境变量。
4. Windows 系统在执行用户命令时,若用户未给出文件的绝对路径,则首先在当前目录下寻找相应的可执行文件。然后在系统变量的 path / PATH / Path 路径中查找,如果找不到,再到用户变量的 path / PATH / Path 路径中查找。
Windows 对于 Path 变量的处理方式是,将用户变量的 Path 添加到系统变量 Path 后面。Windows 在查找指令的时候,是按 Path 中的路径从前往后找,直至在某个路径中找到了该指令。如果系统变量 Path 中有对应指令的话,Windows 就不会再去用户变量 Path 中查找。