jar
- package com.bluedavid.util;
- import java.io.IOException;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.net.URLClassLoader;
- import java.util.Enumeration;
- import java.util.HashSet;
- import java.util.Set;
- import java.util.jar.JarEntry;
- import java.util.jar.JarFile;
- public class DriverUtil {
- public static Set<String> getDrivers(String file) {
- JarFile jar = null;
- Set<String> set = new HashSet<String>();
- try {
- jar = new JarFile(file);
- } catch (IOException e) {
- return null;
- }
- Enumeration<JarEntry> entries = jar.entries();
- URLClassLoader loader = getLoad(file);
- String name;
- while(entries.hasMoreElements()) {
- JarEntry entry = entries.nextElement();
- if(entry.getName().endsWith("Driver.class")) {
- name = entry.getName();
- name = name.substring(0, name.length() - 6);
- name = name.replaceAll("/", ".");
- Class<?> cc = null;
- try {
- cc = loader.loadClass(name);
- } catch (ClassNotFoundException e) {
- continue;
- }
- if(isDriver(cc))
- set.add(name);
- }
- }
- return set;
- }
- public static boolean isDriver(Class<?> clazz) {
- Class<?>[] ccc = clazz.getInterfaces();
- boolean flag = false;
- for(Class<?> aa : ccc) {
- if(aa.getName().equals("java.sql.Driver")) {
- flag = true;
- }
- }
- if(!flag) {
- for (; clazz != null; clazz = clazz.getSuperclass()) {
- Class<?>[] interfaces = clazz.getInterfaces();
- for(Class<?> aa : interfaces) {
- if(aa.getName().equals("java.sql.Driver")) {
- flag = true;
- }
- }
- }
- }
- return flag;
- }
- public static URLClassLoader getLoad(String file) {
- URL[] url = null;
- try {
- url = new URL[]{new URL("file:" file)};
- } catch (MalformedURLException e) {
- return null;
- }
- URLClassLoader loader = new URLClassLoader(url);
- return loader;
- }
- public static Class<?> getDynamic(String file, String clazz) {
- URLClassLoader loader = getLoad(file);
- try {
- return loader.loadClass(clazz);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- return null;
- }
- }