URLClassLoader
说明
public class URLClassLoader extends SecureClassLoader implements Closeable
此类加载器用于从引用 Jar
文件和目录的 URL
的搜索路径加载类和资源。任何以 "/"
结尾的 URL
都假定是指一个目录。否则,URL
被认为是指根据需要打开的 Jar
文件。
当后续加载类和资源时,将使用创建 URLClassLoader 实例的线程的 AccessControlContext。
加载的类默认授权只能访问 URLClassLoader 创建时指定的 URL
。
使用方法
以 C:/code/demo/cn/worstone/HelloWorld.class
举例,其中 demo
为项目名称,cn/worstone
为包路径,HelloWorld.class
为对应类的字节码文件。
URL url = new URL("file:C:/code/demo/");
URL[] urls = new URL[]{url};
// URLClassLoader urlClassLoader = new URLClassLoader(urls);
URLClassLoader urlClassLoader = URLClassLoader.newInstance(urls);
Class<?> aClass = urlClassLoader.loadClass("cn.worstone.HelloWorld");
注意事项
urlClassLoader.loadClass("xxx.xxx");
URL
一定要加上 "file:"
不然会报错。其中"xxx.xxx"
是加载的类的资源路径,即 package.classname
这样的形式。
与 ClassLoader 对比
ClassLoader 只能加载位于 classpath 即 src 目录下的类;而 URLClassLoader 可以加载任意目录下的类。