java.lang.nosuchmethoderror:&#java.lang.string org.hibernate.search.engine.engine.version.version.versionstring()'
我遇到了一个问题,试图将Hibernate搜索从V5升级到6.0。我以前有工作,但是现在无论我做什么,我都会遇到以下错误。
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中的相关进口。我看到版本在那里,但我认为这是一场冲突
<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>
<!-- 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>
I'm having a problem trying to upgrade hibernate search from v5 to 6.0. I had it working previously but now I'm getting the following error no matter what I do.
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)
Here are the relevant imports in my pom.xml. I see that the Version is there but I think these is a conflict some where
<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>
<!-- 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>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在大多数情况下,如果您获得
nosuchmethoderror
,则原因是您的类Path中的JAR带有错误的版本。在这里,我认为您正在导入一个版本的
Hibernate-Search-engine-engine
不是6.0.9.9.final
。原因是您对Hibernate Search 5和Hibernate Search 6的双重依赖性6:
您最终获得了两份
org.hibernate.search.engine.engine.engine.version.version.version
,在这里,这里似乎Hibernate Search 6访问了Hibernate Search 5的版本
类的副本。显然,这是行不通的。无论如何...在同一应用程序中不要同时使用Hibernate Search 5和Hibernate Search 6。从您的POM中删除它:
Most of the time, if you get a
NoSuchMethodError
, the cause is a JAR in your classpath with the wrong version.Here, I think you are importing a version of
hibernate-search-engine
that is not6.0.9.Final
.The cause is your double dependency to both Hibernate Search 5 and Hibernate Search 6:
You end up with two copies of
org.hibernate.search.engine.Version
in your classpath, and here it seems Hibernate Search 6 accessed the copy of theVersion
class from Hibernate Search 5. Which, obviously, doesn't work.Anyway... Don't use both Hibernate Search 5 and Hibernate Search 6 in the same application. Remove this from your POM:
感谢@yrodiere带领我朝着正确的方向前进。实际问题是我的小杂货店 - 普鲁金(Maven-Compiler-Plugin)和我正在使用的冬眠版本。
我将源和目标从11更改为1.8
,然后将冬眠版本更改为5.6.6. -final
,并从org.hibernate.orm恢复为org.hibernate
Thanks to @yrodiere for leading me in the right direction. The actual issue was my maven-compiler-plugin and the version of hibernate I was using.
I changed the source and target to 1.8 from 11
And change my hibernate version to 5.6.6.Final
and revert from org.hibernate.orm to org.hibernate