通过URLClassLoader实现动态加载指定路径下所有Jar

本文介绍了一种Java中用于加载指定目录下所有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);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值