现在有两个类:
class A{
public void method(...) {
//这里会调用一些动态加载的包
}
}class B{
public void callA() {
A a = ...;//我想指定一个ClassLoader,这个ClassLoader里面有动态加载的包
a.method(...);
}
}哪位大虾指点,分不够再加。
class A{
public void method(...) {
//这里会调用一些动态加载的包
}
}class B{
public void callA() {
A a = ...;//我想指定一个ClassLoader,这个ClassLoader里面有动态加载的包
a.method(...);
}
}哪位大虾指点,分不够再加。
return defineClass.getClassLoader();
}
public static Class getClass(String className) throws ClassNotFoundException {
return (getClassLoader().loadClass(className));
}
呵呵,你可以任意自定义ClassLoader load任意class,如果编译器允许的话.
这样也可以实现,但是我不想影响B的context loader,我也不想A运行在另外一个线程里面。
那你直接cl.loadClass("A");不可以么
每次实例化A的时候,都使用cl.loadClass("A").newInstance().
这一点都不影响B啊.
setContextCloassLoader是指定整个线程context的ClassLoader,当然影响B了.A里面使用了什么动态加载的东西?反射?
Class C 在ddd.jar里面.
我试了
cl.loadClass("A").newInstance().这样的方法。A可以从cl里面得到没问题,cl.loadClass("C")也可以,但是在A里面System.out.println(this.getClass().getClassLoader().getClass().getName());并不是URLClassLoader,是com.sun.的什么appclassloader。直接调用C则会抛异常ClassNotFound.还有我的Class c可能是静态方法,如何调用呢?