1、出现原因
我之前安装的jdk是1.6;后来又装成1.8,把变量名JAVA_HOME改成了1.8的文件路径,最终导致java -version和javac -version显示的版本不一致。
2、错误结果
java -version 显示的是最新安装版本的java
javac -version 显示的是你配置环境变量版本的java
3、修改方法
把 %JAVA_HOME% 放在Path的头部;
- 变量名:JAVA_HOME
- 变量值:C:\Program Files\Java\jdk1.8.0
- 变量名:CLASSPATH
- 变量值:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
- 变量名:Path
- 变量值:%JAVA_HOME%\bin;
这些变量都是配置在系统变量里面的(见下图)
4、jar及jdk/jre解释
- dt.jar和tools.jar位于:%Java_Home%/lib/下,rt.jar位于:%Java_Home%/jre/lib/下
- rt.jar是Java基础类库,也就是你在java doc里面看到的所有的类的class文件
- dt.jar是关于运行环境的类库
- tools.jar是工具类库,编译和运行需要的都是tools.jar里面的类分别是sun.tools.java.*; sun.tools.javac.*; 在Classpath设置这几个变量,是为了方便在程序中 import;
- Web系统都用到tool.jar。
- rt.jar 默认就在Root Classloader的加载路径里面的,而在Claspath配置该变量是不需要的;同时jre/lib目录下的 其他jar:jce.jar、jsse.jar、charsets.jar、resources.jar都在Root Classloader中
- tools.jar 是系统用来编译一个类的时候用到的,即执行javac的时候用到 javac XXX.java 实际上就是运行 java -Calsspath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java;javac就是对上面命令的封装,所以tools.jar 也不用加到classpath里面
- dt.jar是关于运行环境的类库,主要是swing的包 在用到swing时最好加上。
- jdk与jre的区别:
- JDK,开发java程序用的开发包,JDK里面有java的运行环境(JRE),包括client和server端的。需要配置环境变量。。。。
- JRE,运行java程序的环境,JVM,JRE里面只有client运行环境,安装过程中,会自动添加PATH
- jdk/jre详解