如何使用spring配置JNDITemplate

时间:2016-12-12 18:10:33

标签: java spring spring-jms

我正在尝试迁移一个使用springframework配置的JMS应用程序。 在迁移之前它工作正常但是一旦我迁移它,它开始给我一个错误。

Caused by: java.lang.NoClassDefFoundError: org/springframework/core/GenericsHelper
                at 

和弹簧配置看起来像这样

<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
    <property name="environment">
        <props>
            <prop key="java.naming.factory.initial">
                org.jnp.interfaces.NamingContextFactory
            </prop>
            <prop key="java.naming.provider.url">
                localhost
            </prop>
            <prop key="java.naming.factory.url.pkgs">
                org.jnp.interfaces:org.jboss.naming
            </prop>
        </props>
    </property>
</bean>

这是使用spring配置文件创建上下文的java代码。

DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();

                BeanDefinition jmsConfigBean = BeanDefinitionBuilder.rootBeanDefinition(TestMessageSelector.class).addConstructorArg(testApp.getUser().get_empNo()).getBeanDefinition();
                beanFactory.registerBeanDefinition("TestMessageSelector", jmsConfigBean);

                BeanDefinition jndiEnvironmentBean = BeanDefinitionBuilder.rootBeanDefinition(TestJndiEnvironment.class).addConstructorArg(testApp.mode).getBeanDefinition();
                beanFactory.registerBeanDefinition("TestJndiEnvironment", jndiEnvironmentBean);

                GenericApplicationContext genericContext = new GenericApplicationContext(beanFactory);
                genericContext.refresh();
                new FileSystemXmlApplicationContext(new String[] { "Spring_JMS_Config.xml" }, genericContext);

对我而言似乎是jar问题。但我真的不知道这个GenericsHelper罐子来自哪里。愿它来自一些古老的spring.jar。但有人帮助使用spring 4配置此配置。 我们将非常感谢。

1 个答案:

答案 0 :(得分:0)

GenericsHelper是旧版本的Spring(在2.5之前)。

您的类路径上可能有不匹配的弹簧罐版本。

所有弹簧罐必须是相同的版本;您可以使用-verbose查看类加载活动(以及加载它们的罐子)。在获得依赖于GenericsHelper的异常之前,可能会加载一些类。