java类加载器


Java中的类加载器

  1. JDK核心类库(jre/lib下的rt.jar等)加载器 Bootstrap ClassLoader(c++实现)

  2. 扩展类库(jre/lib/ext下的jar包)加载器Extend ClassLoader

  3. 应用程序加载器(自己指定classpath以及Mainclass)App ClassLoader

  4. 自定义加载器(自己去某位置找jar,class),示例如下

    	//定义class文件位置
        URL classUrl = new URL("file:C:\\Users\\13934\\Desktop\\");
        URLClassLoader classLoader = new URLClassLoader(new URL[]{classUrl});
        
        //加载class
        Class<?> dabaojianClass = classLoader.loadClass("Dabaojian");
        Object obj = dabaojianClass.newInstance();
        
        //反射执行
        Object result = dabaojianClass.getMethod("service").invoke(obj);
        System.out.println(result);
    

双亲委派
为了避免重复加载,如果一个类加载器收到类加载请求,首先会委托给父类加载器完成,因此所有的类加载器都会将请求传给顶级的启动类加载器。

发表评论

邮箱地址不会被公开。 必填项已用*标注

昵称 *