一个简单的自定义ClassLoader的实现(二)

2014-11-23 20:14:35 · 作者: · 浏览: 18
;}


原来是使用加载这个class的那个classLoader获取得资源。


public URL getResource(String name) { URL url; if (parent != null) { url = parent.getResource(name); } else { url = getBootstrapResource(name); } if (url == null) { url = findResource(name);//这里 } return url;}




这样看来只要继承findResource(String)方法就可以了。修改以下我们的代码:


//新增的一个findResource方法protected URL findResource(String name) { LOG.debug("findResource " + name); try { URL url = super.findResource(name); if (url != null) return url; url = new URL("file:///" + converName(name)); //简化处理,所有资源从文件系统中获取 return url; } catch (MalformedURLException mue) { LOG.error("findResource", mue); return null; }}private String converName(String name) { StringBuffer sb = new StringBuffer(baseDir); name = name.replace(., File.separatorChar); sb.append(File.separator + name); return sb.toString();}


好了,到这里一个简单的自定义的ClassLoader就做好了,你可以添加其他的调料(比如安全检查,修改class文件等),以满足你自己的口味:)