Коннектор Mysql / j загадочно выгружается под Tomcat 6 / JDK 6 - PullRequest
1 голос
/ 13 октября 2009

Спасибо, что нашли время посмотреть на мой вопрос.

Я разработал файл WAR Java, предназначенный для распространения только на один сервер за раз. До сих пор я успешно проверил на 3 разных серверах: одном Debian, одном Ubuntu и другом, машине Windows, на которой я работаю.

На конечном сервере развертывания по какой-то причине приложение разворачивается нормально и при каждом запуске работает нормально в течение примерно 3 минут. Связь с базой данных работает, все работает нормально. Однако через 3 минуты я начинаю видеть NoClassDefFoundError последовательно каждый раз, когда приложение пытается получить доступ к БД.

Я являюсь следующими библиотеками, все из которых упакованы в файл WAR:

Mysql / j Connecter, последняя версия ActiveObjects, 0.8.2 Ясорб 1,3 Jython 2.5.1 (для некоторых скриптов) Tomcat 6.0.20 mod_python Apache

Ошибка:

Исключение в теме "Таймер-4" java.lang.NoClassDefFoundError: ком / MySQL / JDBC / SQLError в com.mysql.jdbc.Util.handleNewInstance (Util.java:430) на com.mysql.jdbc.ConnectionImpl.getInstance (ConnectionImpl.java:352) на com.mysql.jdbc.NonRegisteringDriver.connect (NonRegisteringDriver.java:284) в java.sql.DriverManager.getConnection (DriverManager.java:582) в java.sql.DriverManager.getConnection (DriverManager.java:185) at net.java.ao.DatabaseProvider.getConnectionImpl (DatabaseProvider.java:771) at net.java.ao.DatabaseProvider.getConnection (DatabaseProvider.java:734) at net.java.ao.EntityManager.find (EntityManager.java:666) at net.java.ao.EntityManager.find (EntityManager.java:607) в net.java.ao.EntityManager.find (EntityManager.java:579) на com.sq.sa.SAPushAlertsTask.run (SAPushAlertsTask.java:32) в java.util.TimerThread.mainLoop (Timer.java:512) at java.util.TimerThread.run (Timer.java:462) Вызванный: java.lang.ClassNotFoundException: com.mysql.jdbc.SQLError в org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:138 7) в org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:123 3) в java.lang.ClassLoader.loadClassInternal (ClassLoader.java:320) ... еще 13

1 Ответ

1 голос
/ 13 октября 2009

Либо ваш MySQL / J-соединитель как-то сломан, ИЛИ (более вероятно), у вас есть другой jar-файл в вашем classpath, который имеет только несколько классов из драйвера JDBC MySQL. В любом случае класс "com / mysql / jdbc / SQLError" не найден.

Ваше приложение работает нормально первые несколько минут, затем, когда возникает какая-либо ошибка, вышеупомянутый класс не может быть загружен, который выдает исключение после публикации. Проверьте весь путь к классу (переменная CLASSPATH, переменная + библиотека tomcat + библиотека lib веб-приложения) и проверьте, есть ли у вас SQLError и b) драйвер JDBC MySQL встречается не более одного раза.

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

...