jdk

什么是jdk?

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

jdk包中的重要jar文件

  • rt.jar是JAVA基础类库,也就是你在java doc里面看到的所有的类的class文件
  • dt.jar是关于运行环境的类库,主要是swing的包
  • tools.jar是关于一些工具的类库,tools.jar中主要是jdk工具,包括javac,java,javap,javadoc等
[weblogic@localhost ~]$ ll jdk1.8.0_201/jre/lib/rt.jar 
-rw-r--r-- 1 weblogic weblogic 66356161 Dec 15  2018 jdk1.8.0_201/jre/lib/rt.jar

[weblogic@localhost ~]$ ll jdk1.8.0_201/lib/{dt,tools}.jar
-rw-r--r-- 1 weblogic weblogic   163047 Dec 15  2018 jdk1.8.0_201/lib/dt.jar
-rw-r--r-- 1 weblogic weblogic 18307081 Dec 15  2018 jdk1.8.0_201/lib/tools.jar

以上三个jar文件的作用

1、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 -Calsspath=$JAVA_HOME/lib/tools.jar xx.xxx.Main XXX.java

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

3、dt.jar

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

classpath: 和classpath*:的区别

classpath本质是jvm的根路径,jvm获取资源都是从该根路径下找的,注意这个根路径是个逻辑路径,并不是磁盘路径。比如两个jar包的路径是/a/a.jar和/b/b.jar,但是用classpath*:就可以找到这两个jar包中的资源。

搞懂了classpath指向的classes里放的东西,我们再来看看classpath: 和classpath*:的区别。

1.classpath:只会到你的classes路径中查找找文件。
2.classpath*:不仅会到classes路径,还包括jar文件中(classes路径)进行查找。

原文地址:https://www.cnblogs.com/zh-dream/p/14946392.html