пытаясь изменить classpath через код? - PullRequest
2 голосов
/ 03 января 2012

Я хочу подключиться к базе данных postgresql с помощью драйвера jdbc4, но хотел бы задать путь к классам во время работы программы. Цель состоит в том, чтобы зарегистрировать драйвер для подключения к базе данных. Следующий код объясняет, что я собираюсь сделать, но, увы, код не работает («Не удалось найти драйвер!»). почему я не могу подключиться таким образом? Могу ли я пойти другим путем для достижения того же?

    String originalclasspath = System.getProperty("java.class.path");

    System.setProperty("java.class.path",originalclasspath + ";E:\\postgresql-9.0-802.jdbc4.jar");

    System.out.println(System.getProperty("java.class.path"));

    System.out.println("Checking if Driver is registered with DriverManager.");
    try {
        Class.forName("org.postgresql.Driver");
    } catch (ClassNotFoundException cnfe) {
        System.out.println("Couldn't find the driver!");
        cnfe.printStackTrace();
        System.exit(1);
    }

пожалуйста, ответьте заранее спасибо

Ответы [ 2 ]

2 голосов
/ 03 января 2012

Согласно этому ответу , нет способа надежно изменить системный класс. Этот другой вопрос предлагает способ загрузки драйверов JDBC через загрузчики классов (Прямая ссылка: http://www.kfu.com/~nsayer/Java/dyn-jdbc.html).

0 голосов
/ 03 января 2012

Я не знаю, как изменить путь к классу для загрузчика классов по умолчанию после запуска вашей программы.Если вы абсолютно не можете установить путь к классу перед запуском, вы можете попробовать загрузить класс с помощью пользовательского ClassLoader, например:

http://java.sun.com/developer/onlineTraining/Security/Fundamentals/magercises/ClassLoader/FileClassLoader.java

...