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

刚看了点classLoader,有一事不解。。
我自定义一个classLoader之后怎么用啊?什么因素决classLoader能加在到哪个类?怎么告诉jvm使用我的自定义classLoader?

有点伸手了。。见谅 我手头资料有限。。

------解决方案--------------------
loadClass

newInstance

invoke
------解决方案--------------------
这里是一个简单的定制classloader的例子。
http://www.bitscn.com/plus/view.php?aid=23996
------解决方案--------------------
是,还有时候,某些人是从网络上下载某些重要的执行类的。也听说过过在数据库里面下载类文件的。

当你要实现一个程序,要求是每年只能停机一次的,但你又要无法规避每月的增量更新发布,那你可能就会不得不求助于这种技术。


这类需求其实在大型系统中经常会有需要,虽然未必真能实现非常好,比如电话计费系统。

那么像OSGi就是一种很好的框架模型,应运而生。
------解决方案--------------------
我个人觉得自己写类加载器没有太大的用处,
除非是弄一些特殊的用途,比如你不想让别人通过你的字节码文件发编译出源文件,你对你的字节码文件进行了加密运算,这样的话系统提供的那三个默认的类加载器就不能加载你这个类了,于是只能通过你自己写的类加载器去加载这个类了

系统提供的类加载器采用委托机制,如果你要自己写类加载器的话你需要把你的类挂载到系统的app类加载器下,最好不要打破类加载器的委托机制然后覆盖findClass()方法 ?
不要覆盖classLoader方法,如果你覆盖classLoader的话,就会打破这种委托机制。