当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
计算机二级辅导:利用Java查询Jar包内的驱动类名
发布时间:2010/3/13 9:29:41 来源:城市学习网 编辑:MOON
  最近在开发一个Eclipse插件,插件功能之一就是有个像Myeclipse的DB Browser那样的数据库参数配置面板,开发过程中有个查找Jar包内数据库驱动名称的小技巧,特此跟大家分享一下-
  Java程序源码:
  import java.io.File;
  import java.lang.reflect.Modifier;
  import java.net.URL;
  import java.net.URLClassLoader;
  import java.util.ArrayList;
  import java.util.Enumeration;
  import java.util.List;
  import java.util.zip.ZipEntry;
  import java.util.zip.ZipFile;
  public class MyUtil {
  /**
  * @param l target class name list
  * @param f Jar File
  */
  public static void fillDriverName(ListString l,File... fs){
  for(File f:fs){
  if(f.getName().endsWith(".zip")f.getName().endsWith(".jar")){
  try{
  URLClassLoader urlClassLoader = new URLClassLoader(new URL{f.toURL()});
  ZipFile zip = new ZipFile(f);
  Enumeration? enumZip = zip.entries();
  String className;
  String tempName;
  while(enumZip.hasMoreElements()){
  ZipEntry entry = (ZipEntry) enumZip.nextElement();
  if(!entry.isDirectory()){
  if((tempName = entry.getName()).endsWith(".class") && tempName.indexOf("$")-1){
  //将驱动类路径中的/替换成.
  className = tempName.substring(0,tempName.lastIndexOf(".class")).replaceAll("/", ".");
  if(!"".equals(className)){
  Class? c = null;
  c = urlClassLoader.loadClass(className);
  if(java.sql.Driver.class.isAssignableFrom(c)//判断驱动类是java.sql.Driver的子类
  &&!Modifier.isAbstract( c.getModifiers( ))){//判断驱动类是否为一个抽象类
  l.add(className);
  }
  }
  }
  }
  }
  }catch(Exception e){}catch(Error ex){}
  }
  }
  }
  public static void main(String args) {
  ListString l = new ArrayListString();
  File fs = new File("D:““My Projects““Database drivers““sql2005jdbc.jar");
  fillDriverName(l, fs);
  System.out.println(l);
  }
  }
  :
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved