Tomcat 4.1.24, slf4j 1.6.4 и activemq 5.5.1 Несовместимости - PullRequest
0 голосов
/ 14 декабря 2011

Я сталкиваюсь со следующей ошибкой при попытке инициализировать JMS-соединение между сервлетом на Tomcat и локальным установкой ActiveMQ.

java.lang.NoSuchMethodError: org.slf4j.helpers.MessageFormatter.format(Ljava/lang/String;Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple;
    at org.slf4j.impl.Log4jLoggerAdapter.warn(Log4jLoggerAdapter.java:420)
    at org.apache.activemq.transport.tcp.TcpTransportFactory.createTransport(TcpTransportFactory.java:132)
    at org.apache.activemq.transport.TransportFactory.doConnect(TransportFactory.java:141)
    at org.apache.activemq.transport.TransportFactory.doConnect(TransportFactory.java:51)
    at org.apache.activemq.transport.TransportFactory.connect(TransportFactory.java:80)
    at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:243)
    at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:258)
    at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:230)
    at org.apache.activemq.ActiveMQConnectionFactory.createTopicConnection(ActiveMQConnectionFactory.java:208) ...

Я считаю, что все мои зависимости в порядке.Другие потоки предположили, что это проблема с несоответствующими библиотеками jar slf4j.Вот мой каталог lib.

root@TestDebS:/usr/local/jakarta-tomcat-4.1.24/webapps/examples/WEB-INF# ls lib/
activemq-all-5.5.1.jar   exolabcore-0.3.5.jar   jndi_1.2.1.jar    openjms-0.7.5.jar    slf4j-api-1.6.4.jar
classes12.zip            exolabcore-0.3.7.jar   log4j-1.2.14.jar  openjms-0.7.6.1.jar  slf4j-log4j12-1.6.4.jar
comm.jar                 javax.comm.properties  log4j-1.2.8.jar   openjms-0.7.6.jar    xercesImpl.jar
commons-logging-api.jar  jms_1.0.2a.jar         servlet.jar

Оба [tomcat root] / common / lib и [tomcat root] / shared / lib не имеют ничего примечательного в них.У кого-нибудь есть идеи?Заранее благодарим за любую помощь, которую вы можете оказать!

1 Ответ

0 голосов
/ 14 декабря 2011

У вас есть несколько версий нескольких библиотек в вашем WEB-INF / lib;это плохая идея, поскольку она может привести к смешиванию и сопоставлению разных версий в зависимости от того, какие версии содержат определенные подписи.

Кроме того, вы не должны развертывать свой собственный servlet.jar, если это API-интерфейс сервлета.Ошибки, которые это вызывает, часто неочевидны.Может не решить эту проблему, но, безусловно, остановит других.

...