我正在尝试定义一个自定义的ClassLoader。
public class ExampleLoader extends ClassLoader
{
public Class<?> findClass(String name) throws ClassNotFoundException
{
System.out.println("This never gets printed");
return super.findClass(name);
}
public Class<?> loadClass(String name, boolean b)
throws ClassNotFoundException
{
System.out.println("This never gets printed");
return super.loadClass(name, b);
}
}
当然,这是我用来测试它的代码:
而且当然,我的测试代码如下:
public class Tester
{
public static void main(String[] args)
{
Thread t = new FooThread();
t.setContextClassLoader(new ExampleLoader());
t.start();
}
}
class FooThread extends Thread
{
public void run()
{
new RandomClass();
}
}
问题在于我的代码中的行没有被打印出来。显然我漏掉了什么。
ClassLoader#loadClass()
。通过这种方式,在线程中存储和传递ClassLoader
实例。查看源代码的好起点是org.apache.catalina.core.DefaultInstanceManager
。 - BalusC