ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.toString()
    JAVA 2023. 6. 20. 08:47
    반응형

    환경

    Spring Boot 2.7.12

    Swagger 2.9.2

     

    스웨거 에러 

    2023-06-20 08:38:11.392 ERROR [127.0.0.1] [localhost] 88594 --- [           main] o.s.boot.SpringApplication               [o.s.b.SpringApplication > reportFailure:821] : Application run failed
    
    org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.toString()" because the return value of "springfox.documentation.spi.service.contexts.Orderings.patternsCondition(springfox.documentation.RequestHandler)" is null
    	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181)
    	at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54)
    	at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356)
    	at java.base/java.lang.Iterable.forEach(Iterable.java:75)
    	at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155)
    	at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123)
    	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:937)
    	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586)
    	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
    	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)
    	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
    	at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
    	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
    	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
    	at com.search.dynamic.queue.DynamicQueueApiApplication.main(DynamicQueueApiApplication.java:10)
    Caused by: java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.toString()" because the return value of "springfox.documentation.spi.service.contexts.Orderings.patternsCondition(springfox.documentation.RequestHandler)" is null
    	at springfox.documentation.spi.service.contexts.Orderings$8.compare(Orderings.java:112)
    	at springfox.documentation.spi.service.contexts.Orderings$8.compare(Orderings.java:109)
    	at com.google.common.collect.ComparatorOrdering.compare(ComparatorOrdering.java:37)
    	at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
    	at java.base/java.util.TimSort.sort(TimSort.java:220)
    	at java.base/java.util.Arrays.sort(Arrays.java:1233)
    	at com.google.common.collect.Ordering.sortedCopy(Ordering.java:855)
    	at springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider.requestHandlers(WebMvcRequestHandlerProvider.java:57)
    	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper$2.apply(DocumentationPluginsBootstrapper.java:138)
    	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper$2.apply(DocumentationPluginsBootstrapper.java:135)
    	at com.google.common.collect.Iterators$7.transform(Iterators.java:750)
    	at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:47)
    	at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:47)
    	at com.google.common.collect.MultitransformedIterator.hasNext(MultitransformedIterator.java:52)
    	at com.google.common.collect.MultitransformedIterator.hasNext(MultitransformedIterator.java:50)
    	at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:249)
    	at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:209)
    	at com.google.common.collect.FluentIterable.toList(FluentIterable.java:614)
    	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.defaultContextBuilder(DocumentationPluginsBootstrapper.java:111)
    	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.buildContext(DocumentationPluginsBootstrapper.java:96)
    	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.start(DocumentationPluginsBootstrapper.java:167)
    	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178)
    	... 14 common frames omitted
    
    
    Process finished with exit code 1

     

    해결 방법

     actuator를 삭제한다.

    참고

    https://stackoverflow.com/questions/72235752/cannot-invoke-org-springframework-web-servlet-mvc-condition-patternsrequestcond

     

     


    그 밖의 해결 방법을 시도해 보았을 경우 결과

    1.  @EnableSwagger2 어노테이션 삭제 ( 서버 구동시에 에러는 발생하지 않지만 스웨거에 접근이 안됨 )

     

    2. 스웨거 버전 올리기 ( 에러가 변경됨 )

    해결 방법 중에 다음과 같이

    1. 스웨거 버전을 3.0.0으로 올리고

    2. springfox-boot-starter를 추가한 뒤에 
    3. SwaggerConfig.java 에서 @EnableSwagger2 어노테이션을 삭제

    하라는 안내가 있는데 그렇게 하면

    implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '3.0.0'
    implementation group: 'io.springfox', name: 'springfox-swagger2', version: '3.0.0'
        
    implementation group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0'

    이런 에러가 발생한다.

    2023-06-20 08:26:53.659 ERROR [127.0.0.1] [localhost] 86192 --- [           main] o.s.boot.SpringApplication               [o.s.b.SpringApplication > reportFailure:821] : Application run failed
    
    org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because "this.condition" is null
    	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181)
    	at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54)
    	at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356)
    	at java.base/java.lang.Iterable.forEach(Iterable.java:75)
    	at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155)
    	at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123)
    	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:937)
    	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586)
    	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
    	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)
    	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
    	at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
    	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
    	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
    	at com.search.dynamic.queue.DynamicQueueApiApplication.main(DynamicQueueApiApplication.java:10)
    Caused by: java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because "this.condition" is null
    	at springfox.documentation.spring.web.WebMvcPatternsRequestConditionWrapper.getPatterns(WebMvcPatternsRequestConditionWrapper.java:56)
    	at springfox.documentation.RequestHandler.sortedPaths(RequestHandler.java:113)
    	at springfox.documentation.spi.service.contexts.Orderings.lambda$byPatternsCondition$3(Orderings.java:89)
    	at java.base/java.util.Comparator.lambda$comparing$77a9974f$1(Comparator.java:473)
    	at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
    	at java.base/java.util.TimSort.sort(TimSort.java:220)
    	at java.base/java.util.Arrays.sort(Arrays.java:1307)
    	at java.base/java.util.ArrayList.sort(ArrayList.java:1721)
    	at java.base/java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:392)
    	at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258)
    	at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258)
    	at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258)
    	at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258)
    	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510)
    	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
    	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
    	at springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider.requestHandlers(WebMvcRequestHandlerProvider.java:81)
    	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
    	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
    	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
    	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
    	at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.withDefaults(AbstractDocumentationPluginsBootstrapper.java:107)
    	at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.buildContext(AbstractDocumentationPluginsBootstrapper.java:91)
    	at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.bootstrapDocumentationPlugins(AbstractDocumentationPluginsBootstrapper.java:82)
    	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.start(DocumentationPluginsBootstrapper.java:100)
    	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178)
    	... 14 common frames omitted

    이 상태에서도 actuator를 삭제 하면 정상 동작 한다.

    만약, actuator가 없는데도 발생한다면, application.yml or application.properties에 다음 설정을 넣도록 한다.

    spring.mvc.pathmatch.matching-strategy=ant_path_matcher

    2.xx 버전에서 스웨거 주소

    http://localhost:8080/swagger-ui.html

     

    3.0.0 버전에서 스웨거 주소

    http://localhost:8080/swagger-ui/index.html

     

    반응형

    'JAVA' 카테고리의 다른 글

    max or limit count of 'IN' clause Mysql  (0) 2021.04.26
    Spring batch 히스토리 삭제  (0) 2021.01.04
    S3 파일 업로드  (0) 2020.10.08
    selectKey 여러개  (0) 2019.02.19
    Back단에서 image 조정하여 InputStream으로 반환  (0) 2019.01.25
Designed by Tistory.