2

我正在尝试通过 spring 事务向现有的 web 应用程序添加事务支持。

我最近将会话工厂类从 LocalSessionFactoryBean 更改为 AnnotationSessionFactoryBean。

现在我在 webapp 启动时收到以下错误:

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)

所以根本原因

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

我不明白为什么现在我需要在我的 webapp 中包含 lucene。我不打算将它用于搜索,并且发生此错误对我来说似乎是非常错误的。

4

1 回答 1

2

如果没有看到完整的轨迹,我无法确定,但我的猜测是这与 Hibernate Search 有关,它在引擎盖下使用了 Lucene。

AnnotationSessionFactoryBean尝试在类路径上自动检测 Hibernate Search 的存在,如果找到,将对其进行初始化。根据您的环境,它可能会在找不到 Lucene 之前走这么远。

在你的类路径上找一个 grub,看看 Hibernate Search 是否在那里,看看你是否可以删除它。另一种选择是将hibernate.search.autoregister_listenershibernate 属性设置为false,这应该明确禁用 Hibernate Search 的注册。

于 2010-10-26T21:55:03.460 回答