问题 - 弹簧 - 韦布弹力-Nosuchmethoderror Resporsentity.Status

发布于 2025-02-06 05:36:03 字数 17262 浏览 0 评论 0原文

我正在使用Spring Boot 3Spring-WebfluxQuards 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不及他 2025-02-13 05:36:03

我认为您无法使其与拥有问题 - 弹簧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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文