我正在学习使用gradle的spring-boot-starter-data-elasticsearch。 我在.gradle文件中定义了以下依赖项:
dependencies {
compile 'org.slf4j:slf4j-api:1.7.21'
compile 'org.springframework.boot:spring-boot-starter-data-elasticsearch:1.4.2.RELEASE'
compile 'org.springframework:spring-test:4.1.2.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-logging:1.4.2.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-web:1.4.2.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-actuator:1.4.2.RELEASE'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.7.6'
compile 'com.fasterxml.jackson.core:jackson-core:2.7.6'
testCompile 'junit:junit:4.12'
}
我正在使用2.3.1的弹性搜索版本。 我通过扩展ElasticsearchRepository创建了一个类。 现在,当我尝试查询Elasticsearch时,我得到的是异常
java.lang.NoSuchMethodError:com.fasterxml.jackson.dataformat.smile.SmileGenerator.getOutputContext()Lcom / fasterxml / jackson / core / json / JsonWriteContext;`
请帮我解决这个问题。
答案 0 :(得分:1)
这是一个典型的示例,您自己控制版本依赖项并选择不兼容的版本。你为什么这样做?
Spring Boot的优势之一是它提供了一致且一致的依赖关系管理。您可以让特定版本的Spring Boot为您管理该版本,而不是自己指定版本。这适用于Maven和Gradle。
通过前往https://start.spring.io,选择Gradle项目并在搜索框中键入您的依赖项(web,actuator,elasticsearch),您可以看到典型的gradle构建文件的样子。杰克逊已经通过网络提供,SLF4j随每个入门者提供。