if (clazz == null) {
                clazz = findClass(className);
            }在这里你只获取了 class,没有加入到你的类缓存里吧,你是怎么使用 findLoadedClass(className);查找的?

解决方案 »

  1.   

    怎么加入缓存呢?这个应该都是ClassLoader自己去实现的,不可能是自己加入缓存。我贴的是ClassLoader的源码。
      

  2.   

    你的 findLoadedClass 的代码呢?发上来看看
      

  3.   


    ClassLoader里面声明为final的protected final Class<?> findLoadedClass(String className) {
            ClassLoader loader;
            if (this == BootClassLoader.getInstance())
                loader = null;
            else
                loader = this;
            return VMClassLoader.findLoadedClass(loader, className);
        }
      

  4.   

    无语了,我没有继承DexClassLoader,没有重写任何一个方法,所有的方法都是源码里面的。
      

  5.   

    如果你没有重写 ClassLoader, 那么你每次调用的 ClassLoader同一个吗是?
      

  6.   


    是同一个,就new出来一个。