我在运行时成功加载了一个类,并在该类上调用了 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 !!
}
关于问题可能是什么,我唯一的猜测是该类已为一个类加载器成功加载,但另一个类加载器不知道该类?我真的不知道。请帮忙,谢谢。