问题复现
SpringBoot 版本:2.3.2.RELEASE
ElasticSearch 版本:7.16.2
<!-- 引入es依赖 -->
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>7.16.2</version>
</dependency>
启动项目后,出现异常
[co.elastic.clients.elasticsearch.ElasticsearchClient]: Factory method 'elasticsearchClient' threw exception; nested exception is java.lang.NoClassDefFoundError: jakarta/json/spi/JsonProvider
原因
根据pom文件,可以得知springboot使用的是 1.1.6 版本,由于版本问题,导致找不到这个类出现异常

只需要替换成 2.0.1 版本。
解决
多模块
如果是多模块,在父模块设置版本号即可
<!-- 父模块 -->
<properties>
<jakarta-json.version>2.0.1</jakarta-json.version>
<elasticsearch.version>7.16.2</elasticsearch.version>
</properties>
<!-- 依赖声明 -->
<dependencyManagement>
<dependencies>
<!-- 引入es依赖 -->
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>${jakarta-json.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
单模块
<properties>
<jakarta-json.version>2.0.1</jakarta-json.version>
<elasticsearch.version>7.16.2</elasticsearch.version>
</properties>
<dependencies>
<!-- 引入es依赖 -->
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>${jakarta-json.version}</version>
</dependency>
</dependencies>
修改前:

修改后:

在SpringBoot 2.3.2.RELEASE与Elasticsearch 7.16.2集成时,由于jakarta.json版本不匹配导致启动异常。错误信息指出找不到jakarta.json.spi.JsonProvider类。解决方法是将jakarta.json的版本升级到2.0.1。对于多模块项目,可以在父模块的pom.xml中设置版本号,并在dependencyManagement中声明相关依赖;对于单模块项目,直接在dependencies中更新相关依赖。完成上述修改后,异常可被消除。
6209

被折叠的 条评论
为什么被折叠?



