private Class< ? > doLoadClass(String name) throws ClassNotFoundException {
String path = StringUtils.replaceChars(name, '.', '/') + ".class";
URL url = findResource(path);
if (url == null) {
throw new ClassNotFoundException(name);
}
try {
InputStream stream = url.openStream();
byte[] bytes = IOUtils.toByteArray(stream);
Class< ? > cls = defineClass(name, bytes, 0, bytes.length);
if (cls.getPackage() == null) {
int packageSeparator = name.lastIndexOf('.');
if (packageSeparator != - 1) {
String packageName = name.substring(0, packageSeparator);
definePackage(packageName, null, null, null, null, null, null, null);
}
}
this.classCache.put(name, cls);
return cls;
} catch (IOException ex) {
throw new ClassNotFoundException("Cannot load resource for class [" + name + "]", ex);
}
}