loader.loadClass("java.util.ArrayList");
Class cls4=loader.findLoadedClass("java.util.ArrayList");
if(cls4==null)
System.out.println("cls4==null");结果输出为null, 我不明白明明已经把ArrayList装入ClassLoader了,但是调用findLoadedClass(),还是返回一个null值。分不多了,希望有高手能解释一下。
Class cls4=loader.findLoadedClass("java.util.ArrayList");
if(cls4==null)
System.out.println("cls4==null");结果输出为null, 我不明白明明已经把ArrayList装入ClassLoader了,但是调用findLoadedClass(),还是返回一个null值。分不多了,希望有高手能解释一下。
不是这个loader加载的
loader.loadClass("org.springframework.orm.hibernate.support.HibernateDaoSupport");
loader.loadClass("TBean");
Class cls4=loader.findLoadedClass("org.springframework.orm.hibernate.support.HibernateDaoSupport");cls4一样为null还有,我在程序中加上这句:
loader.loadClass("java.util.ArrayList");
System.out.println("classloader which loads ArrayList:"+java.util.ArrayList.class.getClassLoader());显示结果为null
public class MyClassLoader extends ClassLoader
{
.............}所以可以调用protected 修饰的findLoadedClass()
{
//ArrayList list=new ArrayList();
MyClassLoader loader=new MyClassLoader();
ClassLoader sysloader=loader.getSystemClassLoader();
loader.loadClass("org.springframework.orm.hibernate.support.HibernateDaoSupport");
loader.loadClass("org.springframework.orm.hibernate.support.OpenSessionInViewFilter");
loader.loadClass("java.util.ArrayList");
ClassLoader loader1=org.springframework.orm.hibernate.support.HibernateDaoSupport.class.getClassLoader();
ClassLoader loader2=org.springframework.orm.hibernate.support.OpenSessionInViewFilter.class.getClassLoader();
ClassLoader loader3=java.util.ArrayList.class.getClassLoader();
System.out.println("****hashcode of loader:"+loader.hashCode()+"********");
System.out.println("****hashcode of sysloader:"+sysloader.hashCode()+"********");
System.out.println("****hashcode of loader1:"+loader1.hashCode()+"********");
System.out.println("****hashcode of loader2:"+loader2.hashCode()+"********");
System.out.println("the hascode of classloader whiche loads ArrayList:"+loader3.hashCode());
}出来的结果是:
****hashcode of loader:1027049********
****hashcode of sysloader:17105257********
****hashcode of loader1:17105257********
****hashcode of loader2:17105257********
java.lang.NullPointerException
at classloader.MyClassLoader1.main(MyClassLoader1.java:30)
Exception in thread "main" 证明了加载spring类的ClassLoader是systemClassloader,而ArrayList的ClassLoader则为null, 后来我加上ArrayList list=new ArrayList()实例化后,也是为null,这个问题就比较奇怪了。