2011-12-13 69 views
0

在嘗試初始化Tomcat上的Servlet和本地ActiveMQ實例之間的JMS連接時,我遇到以下錯誤。Tomcat 4.1.24,slf4j 1.6.4和activemq 5.5.1不兼容

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) ... 

我相信我的依賴是爲了。其他線程表示這是slf4j jar庫不匹配的問題。這是我的lib目錄。

[email protected]:/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的根] /普通/ lib和[Tomcat的根] /共享/ lib中什麼都沒有在他們值得注意。有人有主意嗎?預先感謝您提供的任何幫助!

+0

您在`WEB-INF/lib`中有多個版本的多個庫;這是一個壞主意。另外,如果這是servlet API,則不能部署自己的`servlet.jar`。可能無法解決這個問題,但它肯定會阻止其他人發生。 – 2011-12-13 22:09:07

回答

0

您的WEB-INF/lib中有多個版本的多個庫;這是一個壞主意,因爲它可以導致不同版本的混合和匹配,取決於哪個版本包含特定的簽名。

另外,如果這是servlet API,則不得部署自己的servlet.jar。這造成的錯誤往往不明顯。可能無法解決這個問題,但它肯定會阻止其他人發生。