经常碰到需要动态加载jar及class文件的场景。Java类由于需要加载和编译字节码,动态加载class文件较为麻烦,但JDK仍提供了一整套方法来动态加载jar文件和class文件。
一、动态加载jar
// 系统类库路径
File libPath = new File(jar文件所在路径);
// 获取所有的.jar和.zip文件
File[] jarFiles = libPath.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".jar") || name.endsWith(".zip");
}
});
if (jarFiles != null) {
// 从URLClassLoader类中获取类所在文件夹的方法
// 对于jar文件,可以理解为一个存放class文件的文件夹
Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
boolean accessible = method.isAccessible();// 获取方法的访问权限
try {
if (accessible == false) {
method.setAccessible(true);// 设置方法的访问权限
}
// 获取系统类加载器
URLClassLoader classLoader &#