学习ElasticSearch时,写好往ehcahce index索引的代码,启动项目时,发生了Error creating bean with name 'mappingJackson2HttpMessageConverter’报错。
于是我在lib里寻找Jar包,发现引入了Jackson的包。但是pom文件里并没有引入相关依赖。我就查相关依赖,发现是从high-level-client里引入的
看来是elastic高级客户端所必须的包。为了验证这个猜想,我将Jackson所有的jar包全部删除,然后启动。项目确实启动成功了,但是在发送index请求时,也就是在这行代码indexRequest.source(Json) 时发生了错误。
看来它是必须的包。但是在网上并没有寻找适合我的答案。为了解决这个问题,我将JackSon手动引入
然后将不属于我这个引入的JackSon的jar包全部删除 红框部分是我手动引入的jar包,蓝色部分还是高级客户端自动引入的jar包。手动删除蓝色部分的jar包。实测项目可以正常启动以及发送索引请求
但是存在一个致命问题,也就是Reload Maven的话,蓝色部分的jar包又会被自动引入了。为了解决这个问题先要找到这些jar包是被哪些在我们pom文件中的jar包引入的,然后使用exclusion方法忽视掉这些jar包。最后我的pom文件如下所示
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.3.12.RELEASE</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.2.1</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml</groupId>
<artifactId>jackson-xml-databind</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-smile</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-cbor</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- json包 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
</dependencies>
|