最近看java.util.concurrent包的内容,发现java.time.、java.util.、java.nio.、java.lang.、java.text.、java.sql.、java.math.*等等都在rt.jar包下,才发现自己对平时经常用到的jdk的源码来源并不是很清晰。

我们在配置java环境变量时会配置JAVA_HOME、Path、Classpath,其中Classpath会配置​​.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar​​​。当然,在jdk1.5之后可以不用再配置Classpath,笔者猜测应该是BootstrapClassloader已经默认了这个加载路径​​%JAVA_HOME%\lib​​的原因,有具体研究过的期待一起交流。

我们主要看下rt.jar、dt.jar、tools.jar的作用,rt.jar在​​%JAVA_HOME%\jre\lib​​​,dt.jar和tools.jar在​​%JAVA_HOME%\lib​​下。

  • rt.jar:Java基础类库,也就是Java doc里面看到的所有的类的class文件。
  • tools.jar:是系统用来编译一个类的时候用到的,即执行javac的时候用到。
  • dt.jar:dt.jar是关于运行环境的类库,主要是swing包。

图片太占篇幅,最后我们再看下rt.jar包下的java包子目录。 

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