- 126
- 0
- 约2.87千字
- 约 3页
- 2018-06-27 发布于河南
- 举报
Thread.getContextClassLoader()详解
这个问题经常出现在编写框架代码 , 需要动态加载很多类和资源的时候 . 通常当你需要动态加载资源的时候 , 你至少有三个 ClassLoader 可以选择 :
2??????? 系统类加载器或叫作应用类加载器 (system classloader or application classloader)
2??????? 当前类加载器
2??????? 当前线程类加载器
上面的问题指的是最后一种类加载器 . 哪种类加载器是正确的选择呢 ?
第一种选择可以很容易地排除 : 系统类加载器 (system classloader). 这个类加载器处理 -classpath 下的类加载工作 , 可以通过 ClassLoader.getSystemClassLoader() 方法调用 . ClassLoader 下所有的 getSystemXXX() 的静态方法都是通过这个方法定义的 . 在你的代码中 , 你应该尽量少地调用这个方法 , 以其它的类加载器作为代理 . 否则你的代码将只能工作在简单的命令行应用中 , 这个时候系统类加载器 (system classloader) 是 JVM 最后创建的类加载器 . 一但你把代码移到 EJB, Web 应用或 Java Web Start 应用中 , 一定会出问题 .
????? 所以我们来看第二种选择 : 当前上下文环境下的类加载器
原创力文档

文档评论(0)