黑马程序员技术交流社区

标题: ExtClassLoader的疑问 [打印本页]

作者: code_geass    时间: 2013-8-28 18:26
标题: ExtClassLoader的疑问
本帖最后由 code_geass 于 2013-8-28 18:29 编辑

APPClassLoader和ExtClassLoader都继承了URLClassLoader。Launcher初始化时当前线程默认是AppCLassLoader。委托加载器是ExtClassLoader。然后再委托给BootStrap。如果BootStrap找不到。交给ExtClassLoader的findClass。但是再找不到就是抛异常了吧?在哪里交给AppClassLoader了?
  1. protected Class<?> findClass(final String name)
  2.          throws ClassNotFoundException
  3.     {
  4.         try {
  5.             return AccessController.doPrivileged(
  6.                 new PrivilegedExceptionAction<Class>() {
  7.                     public Class run() throws ClassNotFoundException {
  8.                         String path = name.replace('.', '/').concat(".class");
  9.                         Resource res = ucp.getResource(path, false);
  10.                         if (res != null) {
  11.                             try {
  12.                                 return defineClass(name, res);
  13.                             } catch (IOException e) {
  14.                                 throw new ClassNotFoundException(name, e);
  15.                             }
  16.                         } else {
  17.                             throw new ClassNotFoundException(name);
  18.                         }
  19.                     }
  20.                 }, acc);
  21.         } catch (java.security.PrivilegedActionException pae) {
  22.             throw (ClassNotFoundException) pae.getException();
  23.         }
  24.     }
复制代码
还有这个findClass方法里最后没有返回值。为什么自己覆盖的那个findClass里已经return了defineClass了最后还要写一个return?


作者: 范龙波    时间: 2013-8-28 19:37
应该是在这里回调
作者: 范龙波    时间: 2013-8-28 19:58
定义回调接口 实现回调方法

2.png (5.76 KB, 下载次数: 20)

2.png

作者: yangqing    时间: 2013-8-28 23:50
类加载器的委托循环应该是要回到发起者 即加载这个类的类加载器。。。所以应该回到AppCLassLoader类加载器。。当这个还找不到就报异常。。
作者: code_geass    时间: 2013-8-29 01:35
范龙波 发表于 2013-8-28 19:58
定义回调接口实现回调方法

这个是回调? 这个不是访问控制特权么。。

作者: 薛鹏鹏    时间: 2013-9-2 23:14
如果您的问题已经解决
请更改分类未解决为已解决
保持队形,谢谢合作

详情参考 如何修改分类







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2