如果在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

bannerAds