import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class LocalClassLoader extends ClassLoader {
private String path = System.getProperty("user.dir") + File.separator + "webapps" + File.separator + "demo1" + File.separator;
;
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
Class<?> cls = findLoadedClass(name);
if (cls != null) {
return cls;
}
if (!name.endsWith(".Key")) {
return super.loadClass(name);
}
try {
InputStream is = new FileInputStream(path + name.replace(".", "/") + ".class");
byte[] bytes = IOUtils.toByteArray(is);
return defineClass(name, bytes, 0, bytes.length);
} catch (IOException e) {
e.printStackTrace();
}
return super.loadClass(name);
}
public static void main(String[] args) {
try {
LocalClassLoader lcl = new LocalClassLoader();
Class<?> cls = lcl.loadClass("server.LagouServlet");
System.out.println(cls);
} catch (Exception e) {
e.printStackTrace();
}
}
}
java 自定义类加载器
最新推荐文章于 2024-05-22 18:18:00 发布