现象:
命令行输入jps命令,提示"jps不是内部或外部命令,也不是可运行的程序"
背景:
学习JVM,测试jdk自带性能分析工具,需要用到jps工具
思路:
先怀疑自己
可能的原因
- JDK安装有问题,无jps.exe
- 环境变量设置问题,找不到jps.exe
动手:
- 去JAVA_HOME配置的查看,发现jps.exe在,用绝对路径执行是正常的
- 查看环境变量,JAVA_HOME和path配置也是正确的,echo结果也是对的
这里就感觉很奇怪,而且试了下javac命令是正常的,那也不是路径配置问题,这里卡了很久
后来灵机一动,去看了下java和javac实际的路径
bash
where java
where javac
结果指向的不是自己配置的java路径,而是一个看起来默认的路径
shell
C:\Program Files\Common Files\Oracle\Java\javapath\javac.exe
查看了下这个路径下的文件,确实有javac等几个基础的工具
同时去环境变量看了下,path下确实有这个路径
![[问题记录2.png]]
去网上查了下,说是安装较早版本的jdk,会在这个路径下创建一些小型代理exe,并且自动生成这个path,便于升级场景自动更新
结论:
oracle自动path干扰
解决方法,要么删了这个路径,要么把自己配置的路径放前面
我这里将%JAVA_HOME%\bin前移
验证Ok
C:\Users\>jps -l
13816 jdk.jcmd/sun.tools.jps.Jps