首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >org.hibernate.search.engine.Version.versionString()‘:java.lang.NoSuchMethodError: java.lang.String

org.hibernate.search.engine.Version.versionString()‘:java.lang.NoSuchMethodError: java.lang.String
EN

Stack Overflow用户
提问于 2022-04-29 22:58:54
回答 2查看 126关注 0票数 0

我在尝试将hibernate搜索从v5升级到6.0时遇到了问题。我以前曾让它工作过,但现在无论我做什么,我都会得到以下错误。

代码语言:javascript
复制
Apr 29, 2022 6:50:45 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet [fvap] in web application [/ROOT] threw load() exception
java.lang.NoSuchMethodError: 'java.lang.String org.hibernate.search.engine.Version.versionString()'
    at org.hibernate.search.mapper.orm.bootstrap.impl.HibernateSearchIntegrator.integrate(HibernateSearchIntegrator.java:65)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:275)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:462)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)

这是我的pom.xml中的相关进口商品。我看到版本在那里,但我认为这是一个冲突,在某些地方

代码语言:javascript
复制
<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <surefire.skipTests>false</surefire.skipTests>
        <lucene.version>8.7.0</lucene.version>
        <hibernate.version>5.4.0.Final</hibernate.version>
        <hibernate.orm.version>5.4.0.Final</hibernate.orm.version>
        <hibernate.annotations.version>5.1.2.Final</hibernate.annotations.version>
        <hibernate-search.version>6.0.9.Final</hibernate-search.version>
代码语言:javascript
复制
        <!-- Hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${hibernate.version}</version>
        </dependency>
<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-search-orm</artifactId>
            <version>${hibernate.orm.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate.common</groupId>
            <artifactId>hibernate-commons-annotations</artifactId>
            <version>${hibernate.annotations.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate.search</groupId>
            <artifactId>hibernate-search-mapper-orm</artifactId>
            <version>${hibernate-search.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate.search</groupId>
            <artifactId>hibernate-search-backend-lucene</artifactId>
            <version>${hibernate-search.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate.search</groupId>
            <artifactId>hibernate-search-v5migrationhelper-orm</artifactId>
            <version>${hibernate-search.version}</version>
        </dependency>
<!-- Lucene -->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <!-- <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-analyzers-common</artifactId> <version>${lucene.version}</version> </dependency> -->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-highlighter</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-queryparser</artifactId>
            <version>${lucene.version}</version>
        </dependency>
EN

回答 2

Stack Overflow用户

发布于 2022-05-02 06:48:31

大多数情况下,如果您得到一个NoSuchMethodError,原因是您的类路径中有一个带有错误版本的JAR。

在这里,我认为您正在导入一个不是hibernate-search-engine的版本的6.0.9.Final

原因是您对Hibernate搜索5和Hibernate搜索6的双重依赖:

代码语言:javascript
复制
<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-search-orm</artifactId>
            <version>${hibernate.orm.version}</version> <!-- 5.4.0.Final -->
        </dependency>
                <!-- .... -->
        <dependency>
            <groupId>org.hibernate.search</groupId>
            <artifactId>hibernate-search-mapper-orm</artifactId>
            <version>${hibernate-search.version}</version> <!-- 6.0.9.Final -->
        </dependency>

最后,类路径中有两个org.hibernate.search.engine.Version副本,在这里,Hibernate搜索6似乎从Hibernate Search 5访问了Version类的副本,这显然是行不通的。

不管怎样..。不要在同一个应用程序中同时使用Hibernate搜索5和Hibernate搜索6。将其从POM中删除:

代码语言:javascript
复制
<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-search-orm</artifactId>
            <version>${hibernate.orm.version}</version>
        </dependency>
票数 1
EN

Stack Overflow用户

发布于 2022-05-09 18:22:30

感谢@yrodiere引导我走向正确的方向。实际问题是我的maven编译器插件和我正在使用的hibernate版本。

我将源和目标从11更改为1.8

代码语言:javascript
复制
<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
       <configuration>
          <source>1.8</source>
          <target>1.8</target>
            <useIncrementalCompilation>true</useIncrementalCompilation>
       </configuration>
</plugin>

并将hibernate版本更改为5.6.6。

代码语言:javascript
复制
<hibernate.version>5.6.6.Final</hibernate.version>

并从org.hibernate.orm恢复到org.hibernate

代码语言:javascript
复制
<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-core</artifactId>
   <version>${hibernate.version}</version>
</dependency>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72064421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档