学习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文件如下所示
org.springframework.boot
spring-boot-starter-web
2.3.12.RELEASE
com.fasterxml.jackson.datatype
jackson-datatype-jdk8
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
org.elasticsearch.client
elasticsearch-rest-high-level-client
7.2.1
com.fasterxml
jackson-xml-databind
com.fasterxml.jackson.core
jackson-core
com.fasterxml.jackson.dataformat
jackson-dataformat-smile
com.fasterxml.jackson.dataformat
jackson-dataformat-yaml
com.fasterxml.jackson.dataformat
jackson-dataformat-cbor
com.fasterxml.jackson.core
jackson-databind
${jackson.version}
com.fasterxml.jackson.core
jackson-core
${jackson.version}
com.fasterxml.jackson.core
jackson-annotations
${jackson.version}



