Pom*_*rin 3 maven elasticsearch spring-boot elasticsearch-java-api
我想用 Elasticsearch 的新 Java API 客户端替换已弃用的高级 Rest 客户端。问题是,我不确定我的依赖项是否配置正确!我遇到了这个错误:
java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/util/JacksonFeature
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.core.util.JacksonFeature
Run Code Online (Sandbox Code Playgroud)
Elasticsearch 刚刚升级到 7.17.3,Spring Boot 现在是 2.2.8,稍后会升级,但我不确定这是否是问题所在?这是我在 pom 中的依赖项:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-webmvc-core</artifactId>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-security</artifactId>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>7.17.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.2</version>
</dependency>
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>2.1.0</version>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
我按照Elasticsearch的文档进行操作,因此我也尝试使用 2.12.3 版本的 jackson-databind,但错误仍然存在。知道应该改变什么吗?谢谢!
编辑:以防万一它有帮助,这也是我的客户,这是需要依赖项的地方(我假设)
@Configuration
public class ElasticsearchClient{
RestClient restClient = RestClient.builder(new HttpHost("localhost", 9200)).build();
ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());
public ElasticsearchClient client = new ElasticsearchClient(transport);
}
Run Code Online (Sandbox Code Playgroud)
(我必须把公众放在客户面前,因为它位于另一个包下,除非它在那里,否则不会让我调用它)
玩玩后的更多信息:事实证明有一个父级,它会加载一个较旧的杰克逊数据绑定,所以我做了以下操作
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-schema-registry-client</artifactId>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
仍然不起作用,所以我现在 200% 没有想法了
小智 6
添加 jackson-core 解决了我的问题。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.12.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9418 次 |
| 最近记录: |