自定义ClassLoader时候遇到的一个问题

在写自定义ClassLoader时候,发现报了个错,说是不能加载java.lang开头的类, 但是代码好像也没加载java.lang包的类啊

resloveStatement
resloveStatement

查了一会儿,发现原来是java在用自定义ClassLoader加载类的时候,会重新用ClassLoader加载类的所有父类,所以就导致了重新加载java.lang.Object。

加个判断,完事

1
2
3
4
5
6
7
public Class<?> loadClass(String name) throws ClassNotFoundException {
System.out.println(name);
if (name.startsWith("java")) {
return super.loadClass(name);
}
// ....
}