Java类加载器:为什么要先搜索父类加载器?
|
Java中的类加载器的正确行为是:
如果已经加载,则返回该类
调用父loadClass()
尝试并加载类本身。
因此,应始终首先加载系统类路径中定义的类。 Tomcat每次战争都定义了类加载器,该类加载器将系统类加载器作为父类,因此,如果您尝试加载一个类,它将首先在系统类路径中查找,然后在war文件中定义的类路径中查找。
根据我的理解,这有两个原因:
为了避免使用不同版本的类而出现问题。想象一下,我在战争中重新定义了java.lang.Object,那将是一场噩梦。
为了避免依赖于子类加载器:系统类加载器不能依赖子类加载器:例如,很难重新部署战争。
因此,问题是:
除了上述问题之外,实现不首先进行父搜索的类加载器是否还有其他陷阱?
没有找到相关结果
已邀请:
6 个回复
细瑞
填盖
并为父级赋予giving1 simple一样简单:
http://download.oracle.com/javase/6/docs/api/java/net/URLClassLoader.html
疮痪徘弦漏
久坡
掏得透垦滩
断跑胺弄萎