zoukankan      html  css  js  c++  java
  • Thread.currentThread().getContextClassLoader()与Test.class.getClassLoader()的区别

    前者用户线程中动态加载,动态加载资源

    后者只是固定的加载

    http://bbs.csdn.net/topics/370181498

    如果楼主了解过openfire应该对ClassLoader有比较深的理解。
    打个简单的比方,你一个WEB程序,发布到Tomcat里面运行。
    首先是执行Tomcat org.apache.catalina.startup.Bootstrap类,这时候的类加载器是ClassLoader.getSystemClassLoader()。
    而我们后面的WEB程序,里面的jar、resources都是由Tomcat内部来加载的,所以你在代码中动态加载jar、资源文件的时候,首先应该是使用Thread.currentThread().getContextClassLoader()。如果你使用 Test.class.getClassLoader(),可能会导致和当前线程所运行的类加载器不一致(因为Java天生的多线程)。
    Test.class.getClassLoader()一般用在getResource,因为你想要获取某个资源文件的时候,这个资源文件的位置是相对固定的。
    建议楼主去查看一下openfire或者tomcat内部的源码,对ClassLoader会有比较深的理解。
    在openfire里面,openfire使用的类加载器,以及每个插件使用的类加载器都不一样。

  • 相关阅读:
    C#扩展方法
    asp.net mvc获取http body中的json
    ASP.NET MVC 获取表单数据
    @Html.DropDownList()的四种用法及自定义DropDownList扩展

    MVC5+EF6入门完整教程6:Partial View
    Day3.13组件切换
    Day3.12组件中的data和methods
    Day3.11定义私有组件
    Day3.10组件定义方式三
  • 原文地址:https://www.cnblogs.com/IamThat/p/3113875.html
Copyright © 2011-2022 走看看