问题复现
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>
修改前:
修改后: