java.lang.NoSuchMethodError: 'reactor.util.context.ContextView reactor.core.publisher.MonoSink.contextView()'

问题描述 投票:0回答:4

将 Spring Boot 版本从 2.6.6 升级到 2.6.7 后,我在执行 Web 客户端 rest 调用时出现以下错误。有什么想法吗?

示例代码

public void execute(BiConsumer<ResponseEntity<JsonNode>, Throwable> responseConsumer) {
    WebClient.RequestBodyUriSpec uriSpec = getUriSpec();
    Mono<ResponseEntity<JsonNode>> responseEntityMono = uriSpec
            .uri(this::buildUri)//"localhost:1234")//
            .headers(this::setHeaders)
            .body(insertBody())
            .retrieve().onRawStatus(i -> i == 599,
            response -> response.bodyToMono(String.class)
                .map(body -> new ExternalException(599, body)))
            .toEntity(JsonNode.class);
    CompletableFuture<ResponseEntity<JsonNode>> completableFuture = responseEntityMono.toFuture();
    completableFuture.whenCompleteAsync(responseConsumer);
}
java spring-boot project-reactor
4个回答
4
投票

找不到的方法在类MonoSink中(在reactor-core项目中):https://github.com/reactor/reactor-core/blob/main/reactor-core/src/main/java /reactor/core/publisher/MonoSink.java

由于这是从spring boot 2.6.6版本升级后出现的异常,我猜找不到它的类是HttpClientConnect(在项目reactor-netty-http中)。不过,最好有整个堆栈异常。

@jiangjianbo 说的没错,你需要更新reactor-core来解决这个问题,但不是3.4.3版本。它至少应该是 3.4.17 版本(也就是说我会采用最新版本,在撰写本文时是 3.4.19)。正如您在版本 3.4.16 中看到的,contextView() 尚未创建:https://github.com/reactor/reactor-core/blob/v3.4.16/reactor-core/src/main/java/reactor/核心/发布者/MonoSink.java


3
投票

升级你的pom.xml

<dependency>
    <groupId>io.projectreactor</groupId>
    <artifactId>reactor-core</artifactId>
    <version>3.4.3</version>
</dependency>

0
投票

升级pom.xml

<dependency>
    <groupId>io.projectreactor</groupId>
    <artifactId>reactor-core</artifactId>
    <version>3.5.3</version>
</dependency>

0
投票

您已重新加载 Maven 项目。

右键单击 Maven -> 重新加载项目。之后重新运行你的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.