swagger에서 아래와 같은 에러 발생

 

컨테이너에서 확인해 보니 아래와 같은 로그를 발견했다.

Caused by: java.lang.NoSuchMethodError: 'java.lang.String io.swagger.v3.oas.annotations.media.Schema.$dynamicRef()'

 

annotation과 core의 버전 불일치 문제라고 한다.

 

jar에 있는 파일 목록을 살펴보았다.

 

root:  /# jar tf ./app.jar | grep -E "swagger|springdoc" 
BOOT-INF/lib/springdoc-openapi-starter-common-2.8.16.jar 
BOOT-INF/lib/springdoc-openapi-starter-webmvc-api-2.8.16.jar 
BOOT-INF/lib/springdoc-openapi-starter-webmvc-ui-2.8.16.jar 
BOOT-INF/lib/swagger-annotations-2.2.21.jar 
BOOT-INF/lib/swagger-annotations-jakarta-2.2.43.jar 
BOOT-INF/lib/swagger-core-jakarta-2.2.43.jar 
BOOT-INF/lib/swagger-models-jakarta-2.2.43.jar 
BOOT-INF/lib/swagger-ui-5.32.0.jar

 

swagger-annotation과 annotaion-jakarta 의 버전이 맞지 않았다.

2.2.21에는 $dynamicRef() 메서드가 없어서 발생한 사건으로 보인다.

 

2.2.21이 너무 낮은 버전이어서 2.2.43 으로 build.gradle에 추가

 

dependencyManagement {
     dependencies {
        dependency 'io.swagger.core.v3:swagger-annotations:2.2.43'
    }
}

 

 

+ Recent posts