首页 > 解决方案 > 为什么调用 reactor/core/Scannable 时会抛出 java.lang.VerifyError?

问题描述

我正在调查以下 java.lang.VerifyError:

Caused by: java.lang.VerifyError: (class: reactor/core/publisher/FluxCreate$BaseSink, method: scanUnsafe signature: (Lreactor/core/Scannable$Attr;)Ljava/lang/Object;) Illegal type in constant pool
    at reactor.core.publisher.FluxCreate.createSink(FluxCreate.java:83) ~[reactor-core-3.3.0.RELEASE.jar:3.3.0.RELEASE]
    at reactor.core.publisher.FluxCreate.subscribe(FluxCreate.java:90) ~[reactor-core-3.3.0.RELEASE.jar:3.3.0.RELEASE]
    at reactor.core.publisher.Mono.subscribe(Mono.java:4087) ~[reactor-core-3.3.0.RELEASE.jar:3.3.0.RELEASE]
    at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:199) ~[reactor-core-3.3.0.RELEASE.jar:3.3.0.RELEASE]
    at reactor.core.publisher.FluxConcatMap.subscribeOrReturn(FluxConcatMap.java:116) ~[reactor-core-3.3.0.RELEASE.jar:3.3.0.RELEASE]
    at reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:65) ~[reactor-core-3.3.0.RELEASE.jar:3.3.0.RELEASE]
    at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.3.0.RELEASE.jar:3.3.0.RELEASE]
    at reactor.core.publisher.Mono.subscribe(Mono.java:4087) ~[reactor-core-3.3.0.RELEASE.jar:3.3.0.RELEASE]
    at reactor.core.publisher.Mono.subscribeWith(Mono.java:4193) ~[reactor-core-3.3.0.RELEASE.jar:3.3.0.RELEASE]
    at reactor.core.publisher.Mono.subscribe(Mono.java:3919) ~[reactor-core-3.3.0.RELEASE.jar:3.3.0.RELEASE]

我使用 redisson-spring-data-21 3.12.0 库运行以下代码:

final Mono<Boolean> set = reactiveRedisTemplate.opsForValue().set(jsessionId, sessionMap, Duration.ofMinutes(3));
set.doOnError(e -> LOGGER.error("Error")).subscribe();

在 Openshift 上的一个应用程序部署后,所有 subscribe() 调用都成功结束,而另一个所有调用以验证错误异常结束后,错误的发生并不一致。

我检查了依赖项,只有一个版本的 reactor-core 库被使用并包含在应用程序 jar 中。

标签: javaproject-reactorspring-data-redisredisson

解决方案


推荐阅读