Как диагностировать исключение ClassNotFound для драйвера JDBC MySQL - PullRequest
0 голосов
/ 17 марта 2011

Моему веб-приложению не удается подключиться к MySQL, возникает ошибка:

Причина: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Теперь jar коннектора mysql находится в моем пути к классам: mysql-connector-java-5.0.7-bin.jar, в каталоге WEB-INF / lib.

Так что не имеет смысла, что он "не найден". Я предполагаю, что это должно быть сбой некоторой статической инициализации.

Есть ли способ диагностировать эту проблему?

1 Ответ

4 голосов
/ 17 марта 2011

Хотя я не придумал хороших диагностических утилит, кроме трассировки стека, я все же понял, что происходит. Естественно, трассировка стека имеет ключ:

Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)

Источник данных был определен в файле context.xml в веб-приложении, что означает, что драйвер загружался Tomcat с помощью родительского загрузчика классов в веб-приложение. Этот загрузчик классов не имеет доступа к пути к классам приложения.

Решение состоит в том, чтобы поместить jar mysql в каталог общей библиотеки Tomcat.

Другое решение состоит в том, чтобы встроить DataSource в приложение, а не использовать управление данными DataSource от Tomcat, что позволяет использовать стандартный дистрибутив Tomcat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...