首页 > 科技 > java动态加载jar包

java动态加载jar包


有时候,项目中会用到java动态加载指定的类或者jar包反射调用其方法来达到模块的分离,使各个功能之间耦合性大大降低,更加的模块化,代码利用率更高。下边就让我们通过代码来看看如何实现此功能。


public static void addJar() {

try {

// 系统类库路径

File libPath = new File("libs/");

// 获取所有的.jar文件

File[] jarFiles = libPath.listFiles(new FilenameFilter() {

@Overridepublic boolean accept(File dir, String name) {

return name.endsWith(".jar")

}

});

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 = (URLClassLoader) ClassLoader.getSystemClassLoader();

for (File file : jarFiles) {

URL url = file.toURI().toURL();

try {

method.invoke(classLoader, url);

} catch (Exception e) {

e.printStackTrace();

}

}

} finally {

method.setAccessible(accessible);

}

}

} catch (Exception e) {

log.error("添加libs中jar包到系统中", e);

}

}

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/262656.html