每天开心一点

JDK中rt.jar、tools.jar和dt.jar作用

2019-10-20 10:21:00    六月    1421    来源: https://www.cnblogs.com/jtlgb/p/6039809.html

dt.jar和tools.jar位于:{Java_Home}/lib/下,而rt.jar位于:{Java_Home}/jre/lib/下,其中:

rt.jar是JAVA基础类库,也就是你在java doc里面看到的所有的类的class文件
dt.jar是关于运行环境的类库

tools.jar是工具类库,编译和运行需要的都是toos.jar里面的类分别是sun.tools.java.*; sun.tols.javac.*;

在CLASS_PATH设置这几个变量,是为了方便在程序中 import;Web系统都用到tool.jar。

1. rt.jar
    rt.jar 默认就在Root Classloader的加载路径里面的,而在Claspath配置该变量是不需要的;同时jre/lib目录下的

    其他jar:jce.jar、jsse.jar、charsets.jar、resources.jar都在Root Classloader中

2. tools.jar

    tools.jar 是系统用来编译一个类的时候用到的,即执行javac的时候用到

    javac XXX.java

    实际上就是运行

    java -classpath=%JAVA_HOME%libtools.jar xx.xxx.Main XXX.java

    javac就是对上面命令的封装 所以tools.jar 也不用加到classpath里面

3. dt.jar
    dt.jar是关于运行环境的类库,主要是swing的包   在用到swing时最好加上。

关于javac和java

1、为什么安装完jdk后不配置环境变量就能直接运行java,而不能运行javac

  在安装jdk的时候jdk会自带一个jre(java运行环境),还会单独安装一个jre,默认路径是和jdk在同级目录,而且会将这个jre/bin/java.exe拷贝一份到C:WindowsSystem32目录中,而这个目录在系统安装的时候就被配置到了环境变量中,所以能运行java。

  不能运行javac是因为javac.exe是位于%JAVA_HOME%bin目录下面,这个可执行文件没有被配置到环境变量PATH中;

2、为什么配置CLASSPATH系统变量

  CLASSPATH系统变量为类查找路径

    1、在使用javac进行编译时遇到import时候就会通过这个变量里面配置的路径去查找。如果配置的是目录,则会查找目录下的.class或.java(.java会自动编译出.class)的类文件,如果是.jar文件,则会引用.jar中的类,也可以通过javac -cp 进行指定CLASSPATH

    2、使用java运行java程序的时候import类的查找顺序为

      jre/lib中的*.jar,或被-Xbootclasspath参数指定的路径中的.jar(由启动类加载器加载)

      jre/lib/ext子孙目录中的.class和子文件中的*.jar文件,或者由java.ext.dirs系统变量指定的目录和文件(扩展类加载器加载)

      CLASSPATH中配置目录的子孙目录中的.class和配置的.jar中的类(应用程序类加载器加载)

3、问什么CLASSPATH配置 “.;” 和;tools.jar   

  配置CLASSPATH的开头使用.;表示在使用java或javac优先从当前目录查找类资源;tools.jar 是系统用来编译一个类的时候用到的,jps,javap,jstat,jstack等Java工具也使用到了tools.jar中的一些api,其实使用javac命令进行编译的时候已经封装了tools.jar,所以可以不用配置到CLASSPATH中;

好记性不如烂笔头^_^!

参考:https://www.cnblogs.com/luobiao320/p/7975442.html