<code>
public
class
MyClassLoader
extends
WebappClassLoader{
public
MyClassLoader(){
System.out.println(
"无参构造"
);
}
public
MyClassLoader(ClassLoader parent){
super(parent);
System.out.println();
System.out.println(
"当前现成的加载器"
+Thread.currentThread().getContextClassLoader());
System.out.println(getParent());
}
@Override
public
Class<?> loadClass(String name) throws ClassNotFoundException {
Class<?> clazz=null;
clazz=findLoadedClass(name);
if
(clazz==null){
if
(name.contains(
"com.yyd"
)){
clazz=loadbyme(name);
}
else
{
clazz=super.loadClass(name);
}
}
return
clazz;
}
private
Class<?> loadbyme(String name) throws ClassNotFoundException{
ClassPool pool=ClassPool.getDefault();
CtClass ctclass=null;
Class<?> clazz=null;
CtClass ctclass2=null;
Class<?> clazz2=null;
try
{
pool.insertClassPath(
"E:\\***\\WEB-INF\\classes"
);
ctclass = pool.get(name);
ctclass2 = pool.get(name);
try
{
clazz2=ctclass2.toClass();
System.out.println(name+
"------------->"
+clazz2);
}
catch
(CannotCompileException e) {
e.printStackTrace();
}
}
catch
(NotFoundException e) {
System.err.println(
"********NotFoundException---------》"
+name);
clazz=super.loadClass(name);
}
clazz=super.loadClass(name);
return
clazz;
}
}
代码中写有注释的那个
try
-
catch
块,ctclass2.toClass()的底层是做了什么操作?</code>