我正在尝试迁移一个使用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配置此配置。 我们将非常感谢。
答案 0 :(得分:0)
GenericsHelper
是旧版本的Spring(在2.5之前)。
您的类路径上可能有不匹配的弹簧罐版本。
所有弹簧罐必须是相同的版本;您可以使用-verbose
查看类加载活动(以及加载它们的罐子)。在获得依赖于GenericsHelper
的异常之前,可能会加载一些类。