关于向URLClassLoader指定目录URL的问题
要写插件系统,避免不了要使用ClassLoader,一般都使用现有的URLClassLoader.之前用过URLClassLoader,忘记了不少用法
,所以今天再test test.
public class URLClassLoaderextends SecureClassLoader该类加载器用于从指向 JAR 文件和目录的 URL 的搜索路径加载类和资源。这里假定任何以 '/' 结束的 URL 都是指向目录的。如果不是以该字符结束,则认为该 URL 指向一个将根据需要打开的 JAR 文件。
public class Main { /** * @param args * @throws MalformedURLException * @throws ClassNotFoundException */ public static void main(String[] args) throws MalformedURLException, ClassNotFoundException { File f = new File("lib"); MyClassLoader loader = new MyClassLoader(); File[] files = f.listFiles(); for(File file: files){ if(file.exists()){ //loader.addFile(file); // A.添加lib下的所有文件到URLClassLoader System.out.println(file.getAbsolutePath()); } } loader.addFile(f); // B.添加 lib目录到URLCLassLoader System.out.println(loader.getParent()); String className = "org.apache.commons.lang.StringUtils"; loader.loadClass(className); } static class MyClassLoader extends URLClassLoader{ public MyClassLoader(URL[] urls) { super(urls); } public MyClassLoader(){ super(new URL[]{}); } public void addFile(File f) throws MalformedURLException{ this.addURL(f.toURI().toURL()); System.out.println("URL:" + f.toURI().toURL()); } }}