java -version可以了,但是javac不是内部或外部命令,也不是可运行的程序或批处理文件(解决方案)

平时开发用工具的原因,配置JDK环境后,在CMD窗口输入 java -verion 命令,有显示JDK版本,就认为环境已经配置好。

比如这样:

java -version可以了,但是javac不是内部或外部命令,也不是可运行的程序或批处理文件(解决方案)_第1张图片

但是这几天想看看java文件编译后的字节码是啥样的,于是CMD窗口,输入  javac  , 发现提示报错:

java -version可以了,但是javac不是内部或外部命令,也不是可运行的程序或批处理文件(解决方案)_第2张图片

这就很奇怪,于是去找环境变量的配置,经过自己测试,终于解决问题。

首先回顾一下我自己的 JDK 的环境变量配置的 三个变量:

JAVA_HOME:(jdk安装路径)

C:\Program Files\Java\jdk1.8.0_131

CLASSPATH:(现在的jdk版本不需要配置这个变量了,配好path变量就足够)

.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar

注意 前面有这个 .;  英文字符分号和英文字符点

PATH:

%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin


我的配置如图所示(JDK1.8)

只有 JAVA_HOME 和 PATH 做了修改

java -version可以了,但是javac不是内部或外部命令,也不是可运行的程序或批处理文件(解决方案)_第3张图片

查看JDK版本正常显示,看似没问题,但是  javac 指令就报错。

问题就在于我的 JAVA_HOME 是在用户变量中,而不是系统变量

也就是说path这个变量中的 %JAVA_HOME% 对于javac来说可能没生效!

 

于是把 JAVA_HOME 这个变量放到系统变量中,或者直接使用绝对路径不使用 JAVA_HOME 变量,

于是就解决了问题。

还有一个坑

当你的 PATH 这个是直接复制过来的,对于win10来说,不能直接粘贴进来

错误示例

java -version可以了,但是javac不是内部或外部命令,也不是可运行的程序或批处理文件(解决方案)_第4张图片

虽然分号是环境变量的分割符,

但是你输入的文本里面有分号,结果系统自动给你加了引号

点击编辑文本, 或者 cmd直接输入path就会发现:

java -version可以了,但是javac不是内部或外部命令,也不是可运行的程序或批处理文件(解决方案)_第5张图片

正确示例

java -version可以了,但是javac不是内部或外部命令,也不是可运行的程序或批处理文件(解决方案)_第6张图片

 

最后完美解决

java -version可以了,但是javac不是内部或外部命令,也不是可运行的程序或批处理文件(解决方案)_第7张图片

 

总结

1. 变量都写在系统变量中!

2. 有;分隔的变量属性分多条分开写!

3. 修改好环境变量之后记得保存,需要重新打开新的cmd窗口!!

-------------------------------------------------------

你可能感兴趣的:(JAVA)