通过URLClassLoader实现动态加载指定路径上所有Jar
通过URLClassLoader实现动态加载指定路径下所有Jar
示例代码:
package test.tool.gui.dbtool.util; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; import org.apache.log4j.Logger; import test.tool.gui.dbtool.consts.Const; public class JarLoadUtil { private static Logger log = Logger.getLogger(JarLoadUtil.class); private static URL lib_url = ClassLoader.getSystemClassLoader().getResource("lib"); private static URLClassLoader loader = null; /* * 加载lib目录下所有jar文件,并返回相应的的URLClassLoader */ public static URLClassLoader getURLClassLoader(){ if(loader == null){ String fileNames[] = listFileNames(); if(fileNames != null && fileNames.length > 0){ URL urls[] = new URL[fileNames.length]; for(int i = 0;i < fileNames.length;i++){ try { urls[i] = new URL(lib_url+"/"+fileNames[i]); } catch (MalformedURLException e) { if("true".equals(ConfigUtil.getConfInfo().get(Const.IS_LOG)+"")){ log.error("加载lib目录下jar文件出错!",e); } throw new RuntimeException("加载lib目录下jar文件出错!",e); } } loader = new URLClassLoader(urls); } } return loader; } /* * 查询lib目录下的所有文件名称 */ private static String[] listFileNames(){ File file_directory = new File("lib"); return file.list(); } }
使用:
URLClassLoader loader = JarLoadUtil.getURLClassLoader(); Class<?> clazz = loader.loadClass(ds.getDriverClassName()); Driver driver = (Driver)clazz.newInstance(); Properties p = new Properties(); p.put("user", ds.getUsername()); p.put("password", ds.getPwd()); Connection con = driver.connect(ds.getUrl(), p);
http://huangqiqing123.iteye.com/blog/1461624