问题 - 弹簧 - 韦布弹力-Nosuchmethoderror Resporsentity.Status
我正在使用Spring Boot 3
,Spring-Webflux
和Quards spring-webflux
。
我想捕获未经授权的
和访问拒绝
例外,然后返回相关问题对象。为此,我添加了一个SecurityExceptionHandler
,并将配置包括在securityconfiguration
类中。
SecurityExceptionHandler
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.zalando.problem.spring.webflux.advice.general.ThrowableAdviceTrait;
import org.zalando.problem.spring.webflux.advice.security.SecurityAdviceTrait;
@ControllerAdvice
public class SecurityExceptionHandler implements SecurityAdviceTrait, ThrowableAdviceTrait{}
SecurityConfiguration
@Configuration
@EnableWebFluxSecurity
@EnableReactiveMethodSecurity
@Import(SecurityProblemSupport.class)
@RequiredArgsConstructor
public class SecurityConfiguration {
private final SecurityProblemSupport securityProblemSupport;
@Bean
SecurityWebFilterChain webFluxSecurityFilterChain(ServerHttpSecurity http) {
return http
.exceptionHandling()
.authenticationEntryPoint(securityProblemSupport)
.accessDeniedHandler(securityProblemSupport)
.and()
...
...
...
.build();
}
}
当我没有令牌nosuchmethod
deception的访问时。
java.lang.NoSuchMethodError: 'org.springframework.http.ResponseEntity$BodyBuilder org.springframework.http.ResponseEntity.status(org.springframework.http.HttpStatus)'
at org.zalando.problem.spring.common.AdviceTraits.fallback(AdviceTraits.java:44) ~[problem-spring-common-0.27.0.jar:na]
at org.zalando.problem.spring.webflux.advice.AdviceTrait.fallback(AdviceTrait.java:150) ~[problem-spring-webflux-0.27.0.jar:na]
at org.zalando.problem.spring.webflux.advice.AdviceTrait.create(AdviceTrait.java:128) ~[problem-spring-webflux-0.27.0.jar:na]
at org.zalando.problem.spring.webflux.advice.AdviceTrait.create(AdviceTrait.java:81) ~[problem-spring-webflux-0.27.0.jar:na]
at org.zalando.problem.spring.webflux.advice.AdviceTrait.create(AdviceTrait.java:76) ~[problem-spring-webflux-0.27.0.jar:na]
at org.zalando.problem.spring.webflux.advice.security.AuthenticationAdviceTrait.handleAuthentication(AuthenticationAdviceTrait.java:27) ~[problem-spring-webflux-0.27.0.jar:na]
at org.zalando.problem.spring.webflux.advice.security.SecurityProblemSupport.commence(SecurityProblemSupport.java:32) ~[problem-spring-webflux-0.27.0.jar:na]
at org.springframework.security.web.server.authorization.ExceptionTranslationWebFilter.commenceAuthentication(ExceptionTranslationWebFilter.java:95) ~[spring-security-web-6.0.0-M5.jar:6.0.0-M5]
at org.springframework.security.web.server.authorization.ExceptionTranslationWebFilter.lambda$filter$2(ExceptionTranslationWebFilter.java:55) ~[spring-security-web-6.0.0-M5.jar:6.0.0-M5]
at reactor.core.publisher.Mono.lambda$onErrorResume$29(Mono.java:3731) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:544) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onError(Operators.java:2063) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onError(MonoFlatMap.java:172) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onError(Operators.java:2063) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators.error(Operators.java:198) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Mono.subscribe(Mono.java:4324) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:166) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onComplete(FluxDefaultIfEmpty.java:107) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoNext$NextSubscriber.onComplete(MonoNext.java:102) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:83) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.innerNext(FluxConcatMapNoPrefetch.java:258) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:863) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MonoSubscriber.request(Operators.java:1906) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2158) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.request(FluxConcatMapNoPrefetch.java:338) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoNext$NextSubscriber.request(MonoNext.java:108) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.request(FluxDefaultIfEmpty.java:77) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFilter$FilterSubscriber.request(FluxFilter.java:186) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2194) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2068) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFilter$FilterSubscriber.onSubscribe(FluxFilter.java:85) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onSubscribe(FluxDefaultIfEmpty.java:91) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoNext$NextSubscriber.onSubscribe(MonoNext.java:70) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.onSubscribe(FluxConcatMapNoPrefetch.java:164) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:165) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:87) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Mono.subscribe(Mono.java:4324) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Mono.subscribe(Mono.java:4324) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:166) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onComplete(FluxPeekFuseable.java:940) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:85) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2400) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2194) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2068) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Mono.subscribe(Mono.java:4324) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoNext$NextSubscriber.onComplete(MonoNext.java:102) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:166) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:846) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:608) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:588) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onComplete(FluxFlatMap.java:465) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:294) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:230) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:371) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onSubscribe(FluxPeekFuseable.java:178) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:165) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:87) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onComplete(FluxDefaultIfEmpty.java:109) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:142) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:142) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:166) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onComplete(FluxMap.java:269) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1817) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.signalCached(MonoCacheTime.java:337) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.onNext(MonoCacheTime.java:354) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoPublishOn$PublishOnSubscriber.run(MonoPublishOn.java:181) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
gradle.build
plugins {
id 'org.springframework.boot' version '3.0.0-SNAPSHOT'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'war'
}
group = 'com.example.app'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://repo.spring.io/snapshot' }
}
configurations {
integrationTestImplementation.extendsFrom testImplementation
integrationTestRuntimeOnly.extendsFrom testRuntimeOnly
}
dependencies {
annotationProcessor group: 'org.projectlombok', name: 'lombok'
annotationProcessor group: 'org.springframework.boot', name : 'spring-boot-configuration-processor'
implementation group: 'com.amazonaws', name: 'aws-java-sdk-route53', version: '1.12.212'
implementation group: 'com.auth0', name: 'java-jwt', version: '3.15.0'
implementation group: 'net.jodah', name: 'failsafe', version: '2.4.4'
implementation group: 'org.apache.commons', name: 'commons-lang3'
implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.17.2'
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.17.2'
implementation group: 'org.jetbrains', name: 'annotations', version: '23.0.0'
implementation group: 'org.liquibase', name: 'liquibase-core', version: '4.10.0'
implementation group: 'org.projectlombok', name: 'lombok'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-jdbc'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-r2dbc'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-security'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-webflux'
implementation group: 'org.yaml', name: 'snakeyaml', version: '1.30'
implementation group: 'org.zalando', name: 'problem-spring-webflux', version: '0.27.0'
runtimeOnly group: 'com.h2database', name: 'h2'
runtimeOnly group: 'io.r2dbc', name: 'r2dbc-h2'
runtimeOnly group: 'org.postgresql', name: 'postgresql'
runtimeOnly group: 'org.postgresql', name: 'r2dbc-postgresql'
testAnnotationProcessor group: 'org.projectlombok', name: 'lombok'
testImplementation group: 'io.jsonwebtoken', name: 'jjwt', version: '0.9.1'
testImplementation group: 'io.projectreactor', name: 'reactor-test'
testImplementation group: 'jakarta.xml.bind', name: 'jakarta.xml.bind-api', version: '2.3.2'
testImplementation group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '2.3.2'
testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test'
testImplementation group: 'org.springframework.security', name: 'spring-security-test'
}
tasks.named('test') {
useJUnitPlatform()
}
我假设这与依赖关系有关,但是我可以访问这些类/方法,这使我相信这可以与Spring Boot 3
兼容。
是什么原因造成的?
I'm using spring boot 3
, spring-webflux
and problem-spring-webflux
.
I would like to catch unauthorized
and access denied
exceptions and return the relevant problem object. To do this I've added a SecurityExceptionHandler
and included the configuration in a SecurityConfiguration
class.
SecurityExceptionHandler
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.zalando.problem.spring.webflux.advice.general.ThrowableAdviceTrait;
import org.zalando.problem.spring.webflux.advice.security.SecurityAdviceTrait;
@ControllerAdvice
public class SecurityExceptionHandler implements SecurityAdviceTrait, ThrowableAdviceTrait{}
SecurityConfiguration
@Configuration
@EnableWebFluxSecurity
@EnableReactiveMethodSecurity
@Import(SecurityProblemSupport.class)
@RequiredArgsConstructor
public class SecurityConfiguration {
private final SecurityProblemSupport securityProblemSupport;
@Bean
SecurityWebFilterChain webFluxSecurityFilterChain(ServerHttpSecurity http) {
return http
.exceptionHandling()
.authenticationEntryPoint(securityProblemSupport)
.accessDeniedHandler(securityProblemSupport)
.and()
...
...
...
.build();
}
}
When I access the service without a token a NoSuchMethod
exception is thrown.
java.lang.NoSuchMethodError: 'org.springframework.http.ResponseEntity$BodyBuilder org.springframework.http.ResponseEntity.status(org.springframework.http.HttpStatus)'
at org.zalando.problem.spring.common.AdviceTraits.fallback(AdviceTraits.java:44) ~[problem-spring-common-0.27.0.jar:na]
at org.zalando.problem.spring.webflux.advice.AdviceTrait.fallback(AdviceTrait.java:150) ~[problem-spring-webflux-0.27.0.jar:na]
at org.zalando.problem.spring.webflux.advice.AdviceTrait.create(AdviceTrait.java:128) ~[problem-spring-webflux-0.27.0.jar:na]
at org.zalando.problem.spring.webflux.advice.AdviceTrait.create(AdviceTrait.java:81) ~[problem-spring-webflux-0.27.0.jar:na]
at org.zalando.problem.spring.webflux.advice.AdviceTrait.create(AdviceTrait.java:76) ~[problem-spring-webflux-0.27.0.jar:na]
at org.zalando.problem.spring.webflux.advice.security.AuthenticationAdviceTrait.handleAuthentication(AuthenticationAdviceTrait.java:27) ~[problem-spring-webflux-0.27.0.jar:na]
at org.zalando.problem.spring.webflux.advice.security.SecurityProblemSupport.commence(SecurityProblemSupport.java:32) ~[problem-spring-webflux-0.27.0.jar:na]
at org.springframework.security.web.server.authorization.ExceptionTranslationWebFilter.commenceAuthentication(ExceptionTranslationWebFilter.java:95) ~[spring-security-web-6.0.0-M5.jar:6.0.0-M5]
at org.springframework.security.web.server.authorization.ExceptionTranslationWebFilter.lambda$filter$2(ExceptionTranslationWebFilter.java:55) ~[spring-security-web-6.0.0-M5.jar:6.0.0-M5]
at reactor.core.publisher.Mono.lambda$onErrorResume$29(Mono.java:3731) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:544) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onError(Operators.java:2063) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onError(MonoFlatMap.java:172) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onError(Operators.java:2063) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators.error(Operators.java:198) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Mono.subscribe(Mono.java:4324) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:166) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onComplete(FluxDefaultIfEmpty.java:107) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoNext$NextSubscriber.onComplete(MonoNext.java:102) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:83) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.innerNext(FluxConcatMapNoPrefetch.java:258) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:863) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MonoSubscriber.request(Operators.java:1906) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2158) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.request(FluxConcatMapNoPrefetch.java:338) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoNext$NextSubscriber.request(MonoNext.java:108) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.request(FluxDefaultIfEmpty.java:77) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFilter$FilterSubscriber.request(FluxFilter.java:186) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2194) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2068) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFilter$FilterSubscriber.onSubscribe(FluxFilter.java:85) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onSubscribe(FluxDefaultIfEmpty.java:91) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoNext$NextSubscriber.onSubscribe(MonoNext.java:70) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.onSubscribe(FluxConcatMapNoPrefetch.java:164) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:165) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:87) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Mono.subscribe(Mono.java:4324) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Mono.subscribe(Mono.java:4324) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:166) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onComplete(FluxPeekFuseable.java:940) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:85) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2400) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2194) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2068) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Mono.subscribe(Mono.java:4324) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoNext$NextSubscriber.onComplete(MonoNext.java:102) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:166) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:846) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:608) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:588) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onComplete(FluxFlatMap.java:465) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:294) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:230) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:371) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onSubscribe(FluxPeekFuseable.java:178) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:165) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:87) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onComplete(FluxDefaultIfEmpty.java:109) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:142) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:142) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:166) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onComplete(FluxMap.java:269) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1817) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.signalCached(MonoCacheTime.java:337) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.onNext(MonoCacheTime.java:354) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.publisher.MonoPublishOn$PublishOnSubscriber.run(MonoPublishOn.java:181) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) ~[reactor-core-3.5.0-M2.jar:3.5.0-M2]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
gradle.build
plugins {
id 'org.springframework.boot' version '3.0.0-SNAPSHOT'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'war'
}
group = 'com.example.app'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://repo.spring.io/snapshot' }
}
configurations {
integrationTestImplementation.extendsFrom testImplementation
integrationTestRuntimeOnly.extendsFrom testRuntimeOnly
}
dependencies {
annotationProcessor group: 'org.projectlombok', name: 'lombok'
annotationProcessor group: 'org.springframework.boot', name : 'spring-boot-configuration-processor'
implementation group: 'com.amazonaws', name: 'aws-java-sdk-route53', version: '1.12.212'
implementation group: 'com.auth0', name: 'java-jwt', version: '3.15.0'
implementation group: 'net.jodah', name: 'failsafe', version: '2.4.4'
implementation group: 'org.apache.commons', name: 'commons-lang3'
implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.17.2'
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.17.2'
implementation group: 'org.jetbrains', name: 'annotations', version: '23.0.0'
implementation group: 'org.liquibase', name: 'liquibase-core', version: '4.10.0'
implementation group: 'org.projectlombok', name: 'lombok'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-jdbc'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-r2dbc'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-security'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-webflux'
implementation group: 'org.yaml', name: 'snakeyaml', version: '1.30'
implementation group: 'org.zalando', name: 'problem-spring-webflux', version: '0.27.0'
runtimeOnly group: 'com.h2database', name: 'h2'
runtimeOnly group: 'io.r2dbc', name: 'r2dbc-h2'
runtimeOnly group: 'org.postgresql', name: 'postgresql'
runtimeOnly group: 'org.postgresql', name: 'r2dbc-postgresql'
testAnnotationProcessor group: 'org.projectlombok', name: 'lombok'
testImplementation group: 'io.jsonwebtoken', name: 'jjwt', version: '0.9.1'
testImplementation group: 'io.projectreactor', name: 'reactor-test'
testImplementation group: 'jakarta.xml.bind', name: 'jakarta.xml.bind-api', version: '2.3.2'
testImplementation group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '2.3.2'
testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test'
testImplementation group: 'org.springframework.security', name: 'spring-security-test'
}
tasks.named('test') {
useJUnitPlatform()
}
I'm assuming this is dependency related but I have access to these classes/methods which leads me to believe it could be compatibility with spring boot 3
.
What is causing this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为您无法使其与拥有
问题 - 弹簧webflux
的版本一起使用,并依赖于春季5.3,Spring Boot 3带来了Spring 6。因此,您的版本不匹配,我想它称为春季5中存在但不存在的方法
I don't think you can make it work with the versions you have
problem-spring-webflux
relies on Spring 5.3 and spring boot 3 brings spring 6.So you have a version mismatch and I guess it calls a method that exists in Spring 5 but not in 6