Pergunta

Estou tentando adicionar suporte à transação a um WebApp existente por meio de transações de primavera.

Recentemente, mudei minha aula de fábrica de sessões do localSessionFactoryBean para o anotações FactoryBean.

Agora recebo o seguinte erro quando o webApp iniciar:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'txManager' defined in class path resource [context.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [context.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/apache/lucene/analysis/standard/StandardAnalyzer
 at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
 at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
 at java.security.AccessController.doPrivileged(Native Method)

Então a raiz causa

nested exception is java.lang.NoClassDefFoundError: org/apache/lucene/analysis/standard/StandardAnalyzer

Não entendo por que agora preciso incluir Lucene no meu WebApp. Não pretendo usá -lo para pesquisa e parece muito errado para mim que esse erro ocorra.

Foi útil?

Solução

Sem ver o traço completo, não tenho certeza, mas meu palpite é que isso tem algo a ver com a pesquisa de hibernato, que usa Lucene sob o capô.

o AnnotationSessionFactoryBean tentará detectar automaticamente a presa da pesquisa de hibernato no caminho de classe e a inicializará se for encontrada. Dependendo do seu ambiente, pode chegar tão longe antes de não encontrar o Lucene.

Faça uma merda no seu caminho de classe, veja se a pesquisa de hibernato está lá e veja se você pode removê -lo. Outra opção é definir o hibernate.search.autoregister_listeners Hibernate Propriedade para false, que deve desativar explicitamente o registro da pesquisa de hibernato.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top