jdk中rt.jar的作用
rt代表“RunTime”。.jar是.exe,.java,类文件的包,以及软件程序所需的所有媒体资料,如图像,视频,音频。
rt.jar包包含引导类(bootstrap classes)——来自Core Java API的所有类。java.time.、java.util.、java.nio.、java.lang.、java.text.、java.sql.、java.math.*等等都在rt.jar包下。例如,需要从java.util.concurrentpackage引用类,比如 ConcurrentHashMap,JVM会从rt.jar中查找它,从而使程序能够正确运行。
当你编写程序时,你会用到很多系统类的变量,比如String类,System类。它实际上是PrintWritter类的一个对象。所有这些java.*,javax.*,sun.*,org.*,jdk.*类都驻留在rt.jar中,JVM在运行时从rt.jar文件访问所有这些类。如果在类路径中没有包含rt.jar,则无法访问核心类exp,java.lang.String,java.lang.Thread,java.util.ArrayList和Java API中的所有其他类。
rt.jar包含了JVM信任的class文件,JVM加载时不会对其他class文件进行严格的安全检查。
这些API的源代码可以在$ JAVA_HOME / src.zip文件中找到。
由于rt.jar中的所有类都是JVM已知的,当JVM加载这些类时,会用单独的引导类加载器进行加载,避免许多基本安全检查,这样做主要是出于各种性能考虑。而对于其他的jar或class,类加载器会进行大量的安全审查。
我们在配置java环境变量时会配置JAVA_HOME、Path、Classpath,其中Classpath会配置.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
。(在jdk1.5之后可以不用再配置Classpath)
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包子目录。
参考链接:
https://blog.csdn.net/u011305680/article/details/80380532
https://blog.csdn.net/ni_hao_fan/article/details/95315193