public static Class loadClass(String className, Class callingClass) throws ClassNotFoundException {
try {
return Thread.currentThread().getContextClassLoader().loadClass(className);
} catch (ClassNotFoundException e) {
try {
return Class.forName(className);
} catch (ClassNotFoundException ex) {
try {
return ClassLoaderUtil.class.getClassLoader().loadClass(className);
} catch (ClassNotFoundException exc) {
return callingClass.getClassLoader().loadClass(className);
}
}
}
try {
return Thread.currentThread().getContextClassLoader().loadClass(className);
} catch (ClassNotFoundException e) {
try {
return Class.forName(className);
} catch (ClassNotFoundException ex) {
try {
return ClassLoaderUtil.class.getClassLoader().loadClass(className);
} catch (ClassNotFoundException exc) {
return callingClass.getClassLoader().loadClass(className);
}
}
}
}
上面这段代码是struts中的过滤器加载指定类的工具类中的一个方法,从这个方法中可以看到获取类加载器的几种方式。
1. 通过当前线程获取
2. java自身的class
3. 已知执行类的类加载器
4. 工具类的类加载器。
总结起来是三种: 线程、Class、已知类加载器
本文深入探讨了Struts框架中用于加载指定类的工具类中的方法,详细介绍了通过当前线程、Java自身Class、已知类加载器及工具类类加载器获取类加载器的方式。主要内容包括四种获取类加载器的方法:1.通过当前线程获取;2.通过Java的Class获取;3.通过已知执行类的类加载器;4.通过工具类的类加载器。
188

被折叠的 条评论
为什么被折叠?



