Не удается загрузить net.sourceforge.jtds.jdbc.Driver в Tomcat — снова

Та же ошибка, что и Не удается загрузить net.sourceforge.jtds.jdbc.Driver в Tomcat, но на этот раз это решение не работает. Только что завершил обновление Tomcat с 8.0.9 до 8.0.12 на сервере FreeBSD 10, и я снова получаю эту ошибку, хотя jar jtds находится в папке lib. Я скачал новую копию jtds на случай, если старая будет повреждена, а также повторно развернул WAR (на всякий случай). Без изменений. Очевидно, что откат к Tomcat 8.0.9 является вариантом обходного пути, но у меня есть некоторое время, чтобы поработать над этим, и было бы разумно попытаться оставаться в курсе серверного программного обеспечения... Идеи о том, почему я могу снова получить эту ошибку и как это решить?

22-Jul-2014 15:21:17.811 SEVERE [http-nio-443-exec-9] org.apache.catalina.core.StandardWrapperValve.invoke Ser
vlet.service() for servlet [base] in context with path [] threw exception
 com.sscorp.base.exception.SystemException: org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC drive
r class 'net.sourceforge.jtds.jdbc.Driver'
        at com.sscorp.base.util.DBUtils.query(DBUtils.java:175)
        at com.sscorp.base.util.DBUtils.query(DBUtils.java:158)
        at com.sscorp.base.util.DBUtils.findEntitiesBy(DBUtils.java:324)
        at com.sscorp.base.util.DBUtils.findEntityBy(DBUtils.java:315)
        at com.sscorp.base.dao.common.UserDAO.findByUsernameAndPassword(UserDAO.java:50)
        at com.sscorp.base.web.AuthenticationFilter.doFilter(AuthenticationFilter.java:56)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:615)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:655)
        at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:2
22)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'net.sourceforge.jtds.jdb
c.Driver'
        at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136)
        at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
        at org.apache.commons.dbutils.QueryRunner.prepareConnection(QueryRunner.java:334)
        at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:483)
        at com.sscorp.base.util.DBUtils.query(DBUtils.java:172)
        ... 24 more
Caused by: java.lang.ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1324)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1177)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:259)
        at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1130)
        ... 28 more

person Brian Knoblauch    schedule 12.09.2014    source источник
comment
И какое сообщение об ошибке? Исключение? Трассировка стека? Как загрузить драйвер?   -  person a_horse_with_no_name    schedule 12.09.2014
comment
Ошибка: Не удается загрузить net.sourceforge.jtds.jdbc.Driver, который я отредактирую в полной трассировке стека.   -  person Brian Knoblauch    schedule 12.09.2014
comment
Мне трудно найти код в нашем репозитории (это старая программа, которую я не модифицировал пару лет, а количество проектов в нашем репозитории резко возросло за последние пару лет). Я продолжу искать и выложу, когда найду.   -  person Brian Knoblauch    schedule 12.09.2014
comment
java.lang.ClassNotFoundException довольно очевидно, не так ли?   -  person a_horse_with_no_name    schedule 12.09.2014
comment
Ошибка очевидна, но причина - нет. Требуемый файл существует в каталоге lib и работает в версии 8.0.9, но не работает в версии 8.0.12. Никаких изменений кода или конфигурации, только обновление версии Tomcat.   -  person Brian Knoblauch    schedule 12.09.2014


Ответы (1)


После неудачных нескольких дней работы вышло еще несколько обновлений ПО. Применил их (даже не перезагружался, так как они не являются службами/кэшированными), и теперь это волшебным образом работает. Казалось бы, это не связано, но были обновлены curl и python.

person Brian Knoblauch    schedule 17.09.2014