Ошибка Tomcat: java.sql.SQLException: не найден подходящий драйвер для jdbc:sqlserver://

У меня ужасная проблема с Tomcat, ну ужасная, из-за этой проблемы я выбросил проект уже больше месяца... Но мне все равно нужно решить ее и продолжить проект...

Итак, это бросает мне эту ошибку:

java.sql.SQLException: не найден подходящий драйвер для jdbc:sqlserver://isd.ktu.lt:1433;DatabaseName=LN2012_bakDB2 java.lang.NullPointerException

Дело в том, что это же приложение отлично работает в десктопной версии, однако когда дело доходит до версии, которая должна работать на сервере (Tomcat 7.0.22.0 внутри NetBeans 7.1.2), оно просто выдает ошибку. Кажется, он не загружает драйвер пула, или я даже не знаю...

Ну вот часть, ответственная за это:

public DatabaseConnection(Parameters params) {                

    // parameters and the output                
    this.gui = params.getGui();

    // activate database pool
    connectionPool = new GenericObjectPool(null);
    connectionFactory = new DriverManagerConnectionFactory(params.getDbAdr(), params.getDbUser(), params.getDbPass());
    poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true);
    driver = new PoolingDriver();
    driver.registerPool("GenTreeDatabase", connectionPool);
    //driver.registerPool("jdbc:apache:commons:dbcp:GenTreeDatabase", connectionPool);        

}

public void openConn() {
    if (allowOutput) gui.print("Getting connection to database");
    try {
        con = DriverManager.getConnection("jdbc:apache:commons:dbcp:GenTreeDatabase");
        if (con != null) {
            if (allowOutput) gui.print("Connection to database was successful");
        }
    } catch (SQLException ex) {
        gui.err(specificError + "Error getting connection to database - " + ex);
    }
}

Это происходит в тот момент, когда он пытается получить соединение, а затем получает исключение нулевого указателя, так как соединение не получено успешно.

Я не знаком с Tomcat, и до этого момента Netbeans отлично справлялся с tomcat... Дело в том, что я ненавижу такие ошибки... Если вы не решите это за три дня, вы так расстроитесь и не хочу вернуться к этому, вы чувствуете, что врезаетесь в стену ... Теперь я пытался много гуглить об этом, но все же это не очень помогло ... Так что я был бы очень рад, если бы кто-нибудь мог помочь мне с это. Спасибо. :)


person Arturas M    schedule 07.07.2012    source источник
comment
Где находится драйвер базы данных (например, sqljdbc4.jar) в вашем каталоге Tomcat?   -  person Martin Wilson    schedule 08.07.2012
comment
@MartinWilson Это в C:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.22\lib   -  person Arturas M    schedule 09.07.2012
comment
@home Как мне получить трассировку?   -  person Arturas M    schedule 09.07.2012


Ответы (3)


Вы должны скопировать JAR-файл драйвера JDBC в $CATALINA_HOME/lib.

person M. Abbas    schedule 09.07.2012
comment
Привет, где мне найти Catalina_home/lib? Это тоже проблема, я наткнулся на эту папку, погуглив, однако у моего Tomcat, похоже, нет папки? Где я могу найти это? - person Arturas M; 09.07.2012
comment
Сейчас он находится в: C:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.22\lib Apache использует эту папку tomcat, и там находится sqlijdbc4.jar. - person Arturas M; 09.07.2012
comment
что произойдет, если вы замените адрес базы данных на: jdbc:microsoft:sqlserver://isd.ktu.lt:1433;DatabaseName=LN2012_bakDB2 - person M. Abbas; 09.07.2012
comment
ну, почти то же самое:/ - java.sql.SQLException: не найдено подходящего драйвера для jdbc:microsoft:sqlserver://isd.ktu.lt:1433;DatabaseName=LN2012_bakDB2 - person Arturas M; 11.07.2012
comment
Не могли бы вы опубликовать трассировку стека. Вы можете найти его в консоли вашего NetBeans, или в консоли вашего сервера, или в файлах журналов вашего сервера. - person M. Abbas; 11.07.2012
comment
Какая у вас версия jdk? 5 или 6? Для библиотеки классов sqljdbc.jar требуется среда выполнения Java (JRE) версии 5.0. Использование sqljdbc.jar в JRE 6.0 вызовет исключение при подключении к базе данных. Для библиотеки классов sqljdbc4.jar требуется среда выполнения Java (JRE) версии 6.0. Использование sqljdbc4.jar в JRE 1.4 или 5.0 вызовет исключение. См. Системные требования для драйвера JDBC. - person M. Abbas; 11.07.2012

Вероятно, уже слишком поздно, чтобы ответить на этот вопрос, но чтобы помочь с подобными проблемами, вот как я это обошел.

Быстрое решение:

Скопируйте JDBC-driver JAR file (у меня было ojdbc6) в $JAVA_HOME/jre/lib/ext (у меня это было C:\Program Files\Java\jdk1.7.0_80\jre\lib\ext).

Подробности:

Согласно документации Apache Tomcat 7 при запуске Tomcat , он создает набор загрузчиков классов, которые организованы в следующие отношения родитель-потомок:

     Bootstrap
         |
      System
         |
      Common
      /     \
 Webapp1    Webapp2 ...

Каждый загрузчик классов ищет файлы JAR в определенном каталоге. Классы и ресурсы, которые они делают видимыми, объясняются ниже:

Bootstrap: этот загрузчик классов содержит основные классы среды выполнения, предоставляемые JVM, а также любые классы из файлов JAR, находящихся в каталоге System Extensions $JAVA_HOME/jre/lib/ext.

Система: этот загрузчик классов обычно инициализируется из содержимого переменной среды CLASSPATH. Все такие классы видны как внутренним классам Tomcat, так и веб-приложениям. Однако для Tomcat есть некоторые исключения.

Common: этот загрузчик классов содержит дополнительные классы, видимые как для внутренних классов Tomcat, так и для всех веб-приложений. Этот загрузчик классов ищет (по умолчанию) файлы jar в $CATALINA_BASE/lib и $CATALINA_Home/lib.

Веб-приложения: загрузчик классов создается для каждого веб-приложения, развернутого в одном экземпляре Tomcat. Все распакованные классы и ресурсы в каталоге /WEB-INF/classes вашего веб-приложения, а также классы и ресурсы в файлах JAR в каталоге /WEB-INF/lib вашего веб-приложения становятся видимыми для этого веб-приложения. приложение, но не к другим.

  • В заключение, купите, поместив ojdbc файл JAR внутрь $JAVA_HOME/jre/lib/ext драйвера JDBC, он станет видимым на уровне Bootstrap.
person Bahman_Aries    schedule 14.08.2017

Я тоже столкнулся с той же проблемой. Это потому, что на вашем сервере tomcat нет файла jar вашего JDBC. Я исправил проблему, скопировав файл JAR в папку lib на сервере tomcat.

person Dulith De Costa    schedule 05.09.2020