将hibernate-search添加到现有系统的依赖项会导致NoSuchFieldException

时间:2016-11-02 10:15:32

标签: java hibernate maven hibernate-search

我目前正在将hibernate-search添加到一个大的现有项目中,但是我已经遇到了一个我似乎无法解决的问题。

我的问题归结为仅通过为hibernate-search添加maven依赖项而引入:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-search-orm</artifactId>
  <version>5.5.5.Final</version>
</dependency>
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-entitymanager</artifactId>
  <version>5.0.11.Final</version>
</dependency>

只要我将它添加到我的pom.xml中,构建项目并尝试运行它,我得到以下异常(这只是最后一部分):

Caused by: java.lang.NoSuchFieldError: LATEST
at org.hibernate.search.cfg.Environment.<clinit>(Environment.java:213)
at org.hibernate.search.spi.SearchIntegratorBuilder.createCleanFactoryState(SearchIntegratorBuilder.java:280)
at org.hibernate.search.spi.SearchIntegratorBuilder.buildNewSearchFactory(SearchIntegratorBuilder.java:186)
at org.hibernate.search.spi.SearchIntegratorBuilder.buildSearchIntegrator(SearchIntegratorBuilder.java:117)
at org.hibernate.search.hcore.impl.HibernateSearchSessionFactoryObserver.sessionFactoryCreated(HibernateSearchSessionFactoryObserver.java:75)
at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:520)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:465)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
at org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:416)
at org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:401)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1641)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
... 123 more

所以,首先我只是尝试谷歌,但似乎没有其他人曾经在此设置中遇到此问题。所以我试着深入研究代码,看看这个LATEST可能是什么。

在异常之后,我找到以下代码:

    static {
        DEFAULT_LUCENE_MATCH_VERSION = Version.LATEST;
        DEFAULT_SERVICES_MAP = CollectionHelper.newHashMap(1);
        DEFAULT_SERVICES_MAP.put(IndexManagerFactory.class, DefaultIndexManagerFactory.class.getName());
    }

然后我查看了Versions.LATEST,结果发现版本中没有定义LATEST。

所以我的问题是,因为我认为这是我配置的问题,是否有一些我缺失或配置错误的内容?

由于到目前为止我无法在任何地方找到有关此问题的任何内容,我猜测在此工作之前我需要其他/更多设置,但我似乎无法找到答案。我试过按照hibernate-search网站上的入门指南,没有任何运气。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这个问题发生在Hibernate Search 5.11.1上,我通过将Apache Lucene从3.6.2升级到5.5.5来解决了这个问题