AnotaçõessssessionFactoryBean requer classes Lucene
-
26-09-2019 - |
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.
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.