ClassLoader获取的方式
来源:互联网 发布:网络矢量分析仪 编辑:程序博客网 时间:2024/06/05 06:42
其一java 1.2以及之后:
Method method = Thread.class.getMethod("getContextClassLoader", null);ClassLoader cl = (ClassLoader) method.invoke(Thread.currentThread(), null);
其二:ClassLoader cl = className.class.getClassLoader();
其三:Thread.currentThread().getContextClassLoader()
前者是最安全的用法
打个简单的比方,你一个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,因为你想要获取某个资源文件的时候,这个资源文件的位置是相对固定的。
java的类加载机制(jvm规范)是委托模型,简单的说,如果一个类加载器想要加载一个类,首先它会委托给它的parent去加载,如果它的所有parent都没有成功的加载那么它才会自己亲自来,有点儿像儿子使唤老子的感觉。
如果你使用Test.class.getClassLoader(),可能会导致和当前线程所运行的类加载器不一致 :Class.getClassLoader()
returns the class loader for the class. Some implementations may use null to represent the bootstrap class loader. This method will return null in such implementations if this class was loaded by the bootstrap class loader.
- ClassLoader获取的方式
- ClassLoader获取的两种方式
- classLoader获取的几种方式
- 获取ClassLoader
- ClassLoader装载类的方式比较
- 热修复实现:ClassLoader 方式的实现
- ClassLoader.getResourceAsStream(name);获取配置文件的方法
- ClassLoader.getResourceAsStream(name);获取配置文件的方法
- ClassLoader.getResourceAsStream(name);获取配置文件的方法
- ClassLoader.getResourceAsStream(name);获取配置文件的方法
- ClassLoader.getResourceAsStream(name);获取配置文件的方法
- ClassLoader.getResourceAsStream(name);获取配置文件的方法
- ClassLoader.getResourceAsStream(name);获取配置文件的方法
- java 自定义类加载器ClassLoader的实现方式
- 热更新 - ClassLoader方式的实现以及基本原理
- 获取默认ClassLoader方法
- Java获取ClassLoader
- 相对路径获取JAVA配置文件Class.getResourceAsStream() & ClassLoader的getResourceAsStream()
- 百度之星-Problem D
- 计算10000的阶乘
- JAVA常用工具总结
- Windows搭建Ruby环境
- Connection to https://dl-ssl.google.com refused
- ClassLoader获取的方式
- Yii2 使用基本配置
- 安装使用ssdb个人记录
- Gitlab的使用
- 单片机I/O口推挽输出与开漏输出的区别
- Swift高阶函数
- Retrofit 简洁的网络请求神器
- Android开发系列通信篇之EventBus
- Android 自定义系统通知栏的颜色