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的头部;

  1. 变量名:JAVA_HOME  
  2. 变量值:C:\Program Files\Java\jdk1.8.0
  3. 变量名:CLASSPATH  
  4. 变量值:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
  5. 变量名:Path  
  6. 变量值:%JAVA_HOME%\bin;

这些变量都是配置在系统变量里面的(见下图)

java-version 失败 java.version_jdk jre java -versio

4、jar及jdk/jre解释

  1. dt.jar和tools.jar位于:%Java_Home%/lib/下,rt.jar位于:%Java_Home%/jre/lib/下
  2. rt.jar是Java基础类库,也就是你在java doc里面看到的所有的类的class文件
  3. dt.jar是关于运行环境的类库
  4. tools.jar是工具类库,编译和运行需要的都是tools.jar里面的类分别是sun.tools.java.*; sun.tools.javac.*; 在Classpath设置这几个变量,是为了方便在程序中 import;
  5. Web系统都用到tool.jar。
  1. rt.jar 默认就在Root Classloader的加载路径里面的,而在Claspath配置该变量是不需要的;同时jre/lib目录下的    其他jar:jce.jar、jsse.jar、charsets.jar、resources.jar都在Root Classloader中
  2. tools.jar 是系统用来编译一个类的时候用到的,即执行javac的时候用到 javac XXX.java 实际上就是运行    java -Calsspath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java;javac就是对上面命令的封装,所以tools.jar 也不用加到classpath里面
  3. dt.jar是关于运行环境的类库,主要是swing的包  在用到swing时最好加上。
  1. jdk与jre的区别
  1. JDK,开发java程序用的开发包,JDK里面有java的运行环境(JRE),包括client和server端的。需要配置环境变量。。。。
  2. JRE,运行java程序的环境,JVM,JRE里面只有client运行环境,安装过程中,会自动添加PATH
  3. jdk/jre详解