返回信息流<java核心技术第二卷>:
在程序中调用Class.forName 进行类的加载,该类就会通过某一个类加载器进行加载,而此加载器与调用Class.forName的代码的类加载器相同。
1)实现了一个库类,该类有一个调用了Class.forName方法。
2)该方法被一个应用类调用,而加载该应用类的类加载器和加载库类的类加载器不一致(类的加载器不同)
3)加载后的应用类对加载库类的类加载器不可见??
这时候,库类需要更多工作来获得应用类加载器:
Thread t = Thread.currentThread();
ClassLoader loader = t.getContextClassLoader();
Class cl == loader.loaderClass(className)
这段话看懂了,但不明白有什么作用。 不一样又有什么坏处呢?
这是一条镜像帖。来源:北邮人论坛 / java / #24176同步于 2013/1/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
关于类加载器的问题
jiangj
2013/1/7镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
可以想象类加载器都是用URLClassLoader,库加载器的URL是“/”,应用类加载器的URL是“/app"。
现在应用类要加载”/app/SomeClass",对于应用类,其名称就是SomeClass
于是将SomeClass传入方法,库就去加载“/SomeClass.class”
结果ClassNotFoundException
这么理解对么
3q,我想想怎么去验证
【 在 idyllic 的大作中提到: 】
: 可以想象类加载器都是用URLClassLoader,库加载器的URL是“/”,应用类加载器的URL是“/app"。
: 现在应用类要加载”/app/SomeClass",对于应用类,其名称就是SomeClass
: 于是将SomeClass传入方法,库就去加载“/SomeClass.class”
: ...................