Pregunta

Estoy tratando de añadir soporte de transacciones a una aplicación web existente a través de transacciones de primavera.

Recientemente he cambiado de clase de fábrica de sesión desde LocalSessionFactoryBean a AnnotationSessionFactoryBean.

Ahora me sale el siguiente error cuando se inicia la aplicación Web:

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)

por lo que la causa raíz es

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

No entiendo por qué ahora necesito incluir Lucene en mi aplicación web. No planeo usarlo para la búsqueda y parece muy mal a mí que se produce este error.

¿Fue útil?

Solución

Sin ver la traza completa Strack, no puedo estar seguro, pero mi conjetura es que esto tiene algo que ver con Hibernate Search, que utiliza Lucene bajo el capó.

El AnnotationSessionFactoryBean intentará detectar automáticamente el presense de Hibernate Buscar en la ruta de clase, y lo inicializará si se descubre. Dependening en su entorno, puede llegar tan lejos antes de no poder encontrar Lucene.

Tener una comida de alrededor en la ruta de clases, ver si Hibernate búsqueda está ahí, y ver si se puede quitar. Otra opción es la de establecer la propiedad hibernate.search.autoregister_listeners hibernación a false, que debe deshabilitar explícitamente el registro de Hibernate Search.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top