第二章 搜索class文件
在加载类前,需要加载它的父类。本章主要讲述的是对于一个java类对应的class文件搜索。
2.1类路径
1.这里涉及到jvm的类路径有三种:
①.bootstrap classpath从jre\lib加载
②.extension classpath从jre\lib\ext加载
③.application classpath从三方类库加载
有没有想起jvm的类加载机制?<类加载机制,走你!>
2.java命令
java -cp path\to\classes ...
java -cp path\to\lib1.jar ...
java -cp path\to\zip2.zip ...
windows下可以分号分隔,类unix下都是冒号分隔。
java1.6后还可以通过通配符(*)指定某目录下所有的jar
那么问题来了?有没有发现java命令可以解析jar和zip?这是因为jar和zip都是压缩形式的,但是压缩格式不同。
2.2 Go语言语法
1.Go的函数或方法允许返回多个值。
2.Go继承中,不需要实现接口,只要方法匹配即可。
3.Go没有专门的构造函数。
//函数标识符 使用者类型 方法名 形参 类型 返回值
func (self *TestClass) dosomething(inputString string) ([]byte , error) {...}
2.3本章小结
1.jvm解析classpath选项:
-Xjre解析启动类路径和拓展类路径。优先使用用户输入的-Xjre作为jre目录。如果没有输入该选项,则在当前目录下寻找jre目录。如果找不到,尝试使用JAVA_HOME环境变量。
-classpath/-cp为解析用户类路径。如果用户没有提供该选项,则使用当前目录作为用户类路径。
2.jvm根据由第1步处理得到的结果,去寻找.class文件。
①如果带有*(形如:lib\*),则匹配一个目录下的所有.class
②如果带有jar/JAR/zip/ZIP,则需要遍历压缩包里的文件,看是否能够找到.class
③如果带有“;”(多个源),则需要对每一个源进行挨个处理
④一般情况,即直接指定.class文件。