2016-12-12 3 views
0

Я пытаюсь перенести одно из приложений JMS, настроенное с помощью springframework. До миграции он работал нормально, но как только я его перенес, он начинает давать мне эрро.Как настроить JNDITemplate с использованием пружины

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

и весной confguration Похоже, это

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

Вот 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); 

Мне кажется, проблема с банкой. Но я действительно не знаю, откуда идет эта банда GenericsHelper. Может, это из какой-то старой весны. Но кто-то помогает настроить эту конфигурацию с помощью весны 4. Он будет высоко оценен.

+0

Предполагая, что вы используете maven make 'mvn dependency: tree' и проверяете свои зависимости. –

ответ

0

GenericsHelper был в более ранних версиях весны (до 2,5 даже).

Возможно, у вас есть несоответствующие версии весенних банок на вашем пути к классу.

Все ваши весовые банки должны быть одинаковой версии; вы можете использовать -verbose, чтобы увидеть активность загрузки классов (и какие банки они загружены). Вероятно, это будет некоторый класс загружен как раз перед тем, как вы получите исключение, которое зависит от GenericsHelper.

+0

Я использую пружинное ядро, весенние бобы. весенний контекст версии 4.3.2. –

+0

Все три одинаковы с точки зрения версии. Еще один, мне нужно изменить любую конфигурацию в файле конфигурации весны. слишком. –

+0

Да, но что-то пытается загрузить версию этого класса; если это не Spring, это должен быть какой-то другой класс, либо в библиотечном банке, либо в вашем коде напрямую. '-verbose' поможет вам найти, какой из них. –