类加载问题

时间:2013-09-24 13:51:34

标签: java classloader

我在运行时成功加载了一个类,并在该类上调用了newInstance(),并从中创建了一个对象。

但是,稍后在程序中,我试图再次通过名字找到该课程。由于某种原因,该程序找不到它。

以下是代码:

MyClassLoader mcl = new MyClassLoader();
Class<?> c = mcl.loadClass("models." + getModelClassName(), getByteCode());

这是MyClassLoader中的loadClass方法:

   public Class<?> loadClass(String className, byte[] classData){
           return this.defineClass(className,classData,0,classData.length);
        }

无论如何,看来我已经成功加载了这个类,因为我可以在新加载的类“c”上调用newInstance:

     Object o = c.newInstance();

(所以,没有问题)。

但是,稍后在程序中,我进行以下调用:

Class<? extends DB4oModel> dbClass = null;

try{

   dbClass = (Class<? extends DB4oModel>) Class.forName("models."+className);

} catch(ClassNotFoundException e1){

      // this exception is thrown by my program !!

}

我唯一的猜测是问题可能是该类已成功加载一个类加载器但另一个类加载器不知道该类? 我真的不知道。请帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

您需要在Class.forName();中指定类加载器(已加载模型类)作为参数;

请参阅this!