继续上一次对关于JVM对类的加载问题分析,我对上次的程序进行了加强,引入了一个外部的类Employee
package com.felay.userclasses;
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person(String name){
this.name=name;
}
public void sayHello(){
System.out.println("Hello");
}
public static void main(String[] args) {
Employee e =new Employee("张三",8000,1987,12,15);
e.riseSalary(5);
}
}
这次Eclipse开启了我电脑上的5189号端口,也开启了一个主线程
这一次,由于我引用外部,所以情况有点复杂,因为我引入了外部类,因此JVM会抛出大量的异常,尽管这些异常是不必须的,因此我记得有本书上说java的异常有好处也有坏处,好处是易学,其中很大原因就是java封装了我们平时很多错误,但是作为程序员,我们学习的最佳途径本应该是从错误中学习才会很深刻。在这里我们就不讨论这个了。
这里主要是不能找到Employee该类的异常。,这里我们忽略这些异常不去关心,因为这些异常是不会发生的。
重点来了:这个时候,JVM开始加载Employee类了。我们可以看到有个线程调用run()方法开始加载我们的Employee类,其实在这里我也知道这个方法是Eclipse软件带的功能还是Eclispe内置的JVM带的功能(姑且认为是JVM,因为下面先是了我安装JDK中的javaw.exe程序),这点还是需要继续看资料,我们由下图可以看到,JVM通过类加载器先是寻找并发现该类文件,然后加载
至于类加载器是如何工作的,至此我也不清楚,我也想知道,因为我没有该源文件,只知道它是由一个静态工厂产生一个sun.misc.Launcher类来进行对类的加载的。