日期:2014-05-20  浏览次数:20676 次

问一个关于ClassLoader层次的问题
我的程序使用动态装载jar来实现plugin功能,为了能让每个plugin使用单一的jar,我使用一个URLClassLoader来装载这个jar里面的class文件(使用默认无parent构造方法),同时使用getResourceAsStream,JarinputStream和一个继承自classloader的Jarloader来装载这个jar里封装的其他jar,每个JarLoader均使用URLClassLoader的唯一实例作为parent。

我的问题是,
1)在主程序中使用Class.forName(类名)不能装载URLClassLoader里的类,只能使用loader.loadClass(类名)(loader是URLClassLoader实例)  
2)URLClassLoader里存在的类需要用到JarLoader的类来完成功能,但是却找不到所有用JarLoader装载的类(ClassNotFound),是不是父装载器不能在子装载器里找class?

------解决方案--------------------
将程序贴上来