private static String bootClassPath = System.getProperty("sun.boot.class.path");
ExtentionClassLoader
System.getProperty("java.class.path")
AppClassLoader
System.getProperty("java.ext.dirs")
三个加载器通过双亲委派机制来加载类文件,每个加载器都只负责加载自己负责的加载路径,显然,如果要自定义加载路径,从而实现加载外部 jar 包,就必须自定义加载器来实现。
在 JDK 1.8 中,可以看到 AppClassLoader 和 ExtClassLoader 都是继承 URLClassLoader 来实现的。若要加载外部的 jar 包,只需拿到外部 jar 包的 URL 路径,用 URLClassLoader 便可以加载。
获取外部 jar 包中的类以及方法
public class JarUtils {
/**
* 这些默认方法不打印
*/
private static List<String> DEFAULT_METHODS = Arrays.asList("wait", "equals", "notify", "notifyAll", "toString", "hashCode" , &#