Обновление до ActiveMQ 5.5 вызывает java.lang.ClassNotFoundException: org.slf4j.Logger - PullRequest
0 голосов
/ 13 сентября 2011

Мы использовали ActiveMQ 5.2 и планируем перейти на ActiveMQ 5.5.

Мы используем Spring Framework (2.5.6) и используем Jetty (6.1.2) при работе в режиме разработки.

Я не внес никаких изменений в файл applicationContext, но внес изменения в путь к классам, чтобы были включены новые файлы jar (activemq-core-5.5.0.jar, xbean-spring-3.7.jar).

Однако экземпляр dev завершается ошибкой со следующим сообщением об ошибке:

org.springframework.beans.factory.BeanDefinitionStoreException: непредвиденное исключение при разборе XML-документа из ресурса пути к классу [applicationContext-activemq.xml]; вложенным исключением является java.lang.NoClassDefFoundError: org / slf4j / Logger в org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions (XmlBeanDefinitionReader.java:420) в org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:342) в org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:310) в org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:143) в org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:178) в org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:149) в org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions (XmlWebApplicationContext.java:124) в org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions (XmlWebApplicationContext.java:92) в org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory (AbstractRefreshableApplicationContext.java:123) в org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory (AbstractApplicationContext.java:422) в org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:352) в org.springframework.web.context.ContextLoader.createWebApplicationContext (ContextLoader.java:255) в org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader.java:199) в org.springframework.web.context.ContextLoaderListener.contextInitialized (ContextLoaderListener.java:45) на org.mortbay.jetty.handler.ContextHandler.startContext (ContextHandler.java:543) на org.mortbay.jetty.servlet.Context.startContext (Context.java:136) на org.mortbay.jetty.webapp.WebAppContext.startContext (WebAppContext.java:1220) на org.mortbay.jetty.handler.ContextHandler.doStart (ContextHandler.java:513) на org.mortbay.jetty.webapp.WebAppContext.doStart (WebAppContext.java:448) на com.google.gwt.dev.shell.jetty.JettyLauncher $ WebAppContextWithReload.doStart (JettyLauncher.java:447) на org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java:39) на org.mortbay.jetty.handler.HandlerWrapper.doStart (HandlerWrapper.java:130) на org.mortbay.jetty.handler.RequestLogHandler.doStart (RequestLogHandler.java:115) на org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java:39) на org.mortbay.jetty.handler.HandlerWrapper.doStart (HandlerWrapper.java:130) на org.mortbay.jetty.Server.doStart (Server.java:222) на org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java:39) на com.google.gwt.dev.shell.jetty.JettyLauncher.start (JettyLauncher.java:543) на com.google.gwt.dev.DevMode.doStartUpServer (DevMode.java:421) на com.google.gwt.dev.DevModeBase.startUp (DevModeBase.java:1035) на com.google.gwt.dev.DevModeBase.run (DevModeBase.java:783) на com.google.gwt.dev.DevMode.main (DevMode.java:275) Вызывается: java.lang.NoClassDefFoundError: org / slf4j / Logger в java.lang.Class.getDeclaredMethods0 (собственный метод)в java.lang.Class.privateGetDeclaredMethods (неизвестный источник) в java.lang.Class.getDeclaredMethods (неизвестный источник) в java.beans.Introspector $ 1.run (неизвестный источник) в java.security.AccessController.doPrivileged (родной метод)java.beans.Introspector.getPublicDeclaredMethods (неизвестный источник) в java.beans.Introspector.getTargetMethodInfo (неизвестный источник) в java.beans.Introspector.getBeanInfo (неизвестный источник) в java.beans.IntrospectorInfo. неизвестныйбобы0) в org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.parseBeanFromExtensionElement (XBeanNamespaceHandler.java:225) в org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.parseBeanFromExtensionElement (XBeanNamespaceHandler.ep.hep.XBeanNamespaceHandler.java:156) в org.apache.xbean.spring.context.v2.XBeanNamespaceHandler.parse (XBeanNamespaceHandler.java:49) в org.springframework.beans.factory.xml.Danпо адресу org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement (BeanDefinitionParserDelegate.java:1287) по адресу org.springframework.beans.factory.xml.DefaultBeanDefinitionFean_Def_DF_DF_DF_DF_D_F_D_D_W_D_F_P_D_W_D_F_P_D_W_D_P_P.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions (DefaultBeanDefinitionDocumentReader.java:92) в org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions (XmlBeanDefinitionReader.java:507) по адресу org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions (XmlBeanDefinitionReader.java:39g): jog.jpgjava.net.URLClassLoader $ 1.run (неизвестный источник) в java.security.AccessController.doPrivileged (собственный метод) в java.net.URLClassLoader.findClass (неизвестный источник) в com.google.gwt.dev.shell.jetty.JettyLauncher$ WebAppContextWithReload $ WebAppClassLoaderExtension.findClass (JettyLauncher.java:354) по адресу org.mortbay.jetty.webapp.WebAppClassLoader.loadClass (WebAppClassLoader.java:366) по адресу org.mortbay.jp.Ac.) в java.lang.ClassLoader.loadClassInternal (неизвестный источник) ... еще 56

Я пробовал добавить дополнительные jar (slf4j-api-1.5.11.jar), которые содержат интерфейс Logger к classpathно все же получил то же исключение.

Определение очереди applicationContext выглядит следующим образом

`

<bean id="connectionFactory"
    class="org.apache.activemq.spring.ActiveMQConnectionFactory">
    <property name="brokerURL" value="vm://localhost?async=false" />
    <property name="redeliveryPolicy" ref="redeliveryPolicy"/>
</bean>

<bean id="jmsTemplate"
    class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory" />
    <property name="defaultDestination" ref="httpPostQueue" />
</bean>

<!-- brokers -->
<amq:broker id="broker" start="false" useJmx="false">
    <amq:destinationPolicy>
        <amq:policyMap>
            <amq:policyEntries>
                <amq:policyEntry queue="emailQueue">
                    <amq:deadLetterStrategy>
                        <amq:individualDeadLetterStrategy queuePrefix="DLQ."/>
                    </amq:deadLetterStrategy>
                </amq:policyEntry>
            </amq:policyEntries>
        </amq:policyMap>
    </amq:destinationPolicy>
    <amq:persistenceAdapter>
        <amq:jdbcPersistenceAdapter dataSource="#dataSource" useDatabaseLock="false"/>
    </amq:persistenceAdapter>
</amq:broker>`

Какие еще изменения необходимо внести для обновления ActiveMQ до версии 5.5?

Заранее спасибо, ребята.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

У меня была такая же проблема при обновлении до ActiveMQ 5.5. Оказывается, ActiveMQ 5.5 использует более новую версию slf4j. Мы все еще использовали 1.4.2, который слишком стар. В нашем файле maven pom я обновил зависимость slf4j:

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.6.4</version>
</dependency>
0 голосов
/ 14 сентября 2011

AMQ 5.5 использует SLF4J и предоставляет slf4j-api в activemq-all, но ваше приложение должно включать один из связующих (см. http://www.slf4j.org/codes.html#StaticLoggerBinder)

...