通过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);

你可能感兴趣的:(properties,String,jar,File,url,filenames)