/ / Как да диагностицираме изключение от ClassNotFound за драйвера за MySQL JDBC - java, mysql, tomcat

Как да диагностицираме изключение от ClassNotFound за драйвера на MySQL JDBC - java, mysql, tomcat

Моята webapp не успя да получи връзка с MySQL, а не с грешката:

Причинено от: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Сега mysql конектора е ясно в myclasspath: mysql-connector-java-5.0.7-bin.jar, в директорията WEB-INF / lib.

Така че няма смисъл да не е "намерен". Предполагам, че не трябва да се прави някаква статична инициализация.

Има ли някакъв начин да се диагностицира този проблем?

Отговори:

4 за отговор № 1

Макар че не бях дошъл с добри диагностични инструменти, освен натрупването на стека, осъзнавах какво се случва. Естествено, натрупването има значението:

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)

Източникът на данни е дефиниран в контекст.xml файла в уеб приложението, което означава, че драйверът е бил зареден от Tomcat, използвайки родителския класовете за зареждане в уеб приложението. Това classloader няма достъп до classpath на приложението.

Решението е да изпуснете мишката в браузъра на споделената библиотека на Tomcat.

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