Загрузка драйвера JDBC во время выполнения

Я использую следующий код для загрузки класса драйвера:

public class DriverLoader extends URLClassLoader {

    private DriverLoader(URL[] urls) {
        super(urls);
        File driverFolder = new File("driver");
        File[] files = driverFolder.listFiles();
        for (File file : files) {
            try {
                addURL(file.toURI().toURL());
            } catch (MalformedURLException e) {
            }
        }
    }


    private static DriverLoader driverLoader;


    public static void load(String driverClassName) throws ClassNotFoundException {
        try {
            Class.forName(driverClassName);
        } catch (ClassNotFoundException ex) {
            if (driverLoader == null) {
                URL urls[] = {};
                driverLoader = new DriverLoader(urls);
            }
            driverLoader.loadClass(driverClassName);
        }
    }
}

Хотя класс загружается нормально, я не могу установить соединение с базой данных (не найден подходящий драйвер для ...) нет неважно, какой драйвер я пробую.

Я предполагаю, что это потому, что я не загружаю класс драйвера с помощью Class.forName (что не сработает, поскольку я использую свой собственный ClassLoader). Как я могу это исправить?

5
задан jhasse 15 April 2011 в 09:11
поделиться