如果在ElasticSearch中发生了java.lang.ClassNotFoundException异常,可以采取以下对策
我正在开发一个使用Spring Boot与Elasticsearch相互连接的应用程序,当我调用Document API时,出现了java.lang.ClassNotFoundException: org.elasticsearch.common.xcontent.LoggingDeprecationHandler的错误。下面是解决方案备忘录。
根本原因 – .
出现错误是因为缺少LoggingDeprecationHandler这个类。缺少该类的原因是因为存在依赖不足。
最初,我把Elasticsearch的依赖性以以下方式写在maven的依赖性中。
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.3.2</version>
</dependency>
然而,这个org.elasticsearch.client中并没有包含LoggingDeprecationHandler,为了正常运行,需要将org.elasticsearch也作为依赖项包含进去。
解决方案
通过修改pom文件如下,可以使得上述的异常不再发生,并且可以正常运行。
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.3.2</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.3.2</version>
</dependency>
请在母语中重述以下内容:「参考」
Github:java.lang.ClassNotFoundException:org.elasticsearch.common.xcontent.NamedXContentRegistry#26959