Java class文件及其加载过程探索

1. 基础知识
  1. class文件可以存储在文件系统的子目录中,类路径必须与包名匹配。另外,class文件也可以存储在JAR文件中。JAR文件以zip格式组织文件和子目录。
  2. javac编译器总是在当前的目录中查找文件,但JVM仅在类路径中有“.”目录的时候才查看当前目录。
  3. JVM搜索class文件的过程:首先查看存储在jre/lib和jre/lib/ext目录下的jar文件中的class文件,若没有待查找的class文件,则在classpath的jar包和路径下搜索待查找的class文件。
  4. javac编译器定位源文件过程:若源文件引用了一个类而未指出该类所在的包,那么编译器将首先查找当前包,并查询所有的import指令 ,确定其中是否含有被引用的类。如果找到了一个以上的类,就会产生编译错误。
2. 常见的jar文件
  • $JAVA_HOME/lib/tools.jar:tools.jar 是系统用来编译一个类的时候用到的,即执行javac的时候用到。所以javac就是对上面命令的封装,所以tools.jar 不用加到classpath里面。
javac XXX.java
// 实际上就是运行
java -classpath $JAVA_HOME/lib/tools.jar xx.xxx.Main XXX.java
  • $JAVA_HOME/lib/dt.jar:dt.jar是关于运行环境的类库,主要是swing的包,在用到swing时最好加上。

  • $JAVA_HOME/jre/lib/rt.jar:运行时库rt.jar和jre/lib与jre/lib/ext目录下的一些其他jar文件会被自动搜索,因此不需要显式地列在classpath中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值