Spring Boot + Spring Security + SpringDoc 연동 시 NoSuchMethodError 문제 해결

Kim jisu·2025년 3월 21일

 Debugging Note

목록 보기
19/37

[문제 상황]

  • 에러 메시지
    java.lang.NoSuchMethodError: 'void org.springframework.web.me ...'
  • /v3/api-docs 요청 시 에러가 발생하여 Swagger(OpenAPI) 문서를 표시할 수 없었음
  • 스프링 시큐리티를 추가한 뒤부터 NoSuchMethodError가 발생

[원인 분석]

  • 스프링 웹(Sprint Web), 스프링 시큐리티(Spring Security), 그리고 SpringDoc(OpenAPI) 라이브러리가 모두 버전 충돌로 의심
  • 특히 기존에 사용 중이던 org.springdoc:springdoc-openapi-starter-webmvc-ui 버전이 스프링 최신 버전(3.x/6.x)과 호환되지 않아서 충돌이 날 가능성이 높았음

[해결 방법]

  1. SpringDoc 버전 업그레이드
    • 구 버전(예: 2.1.0) → 최신 버전(예: 2.8.5 이상)으로 업데이트
  2. 루트 프로젝트에서 버전 통일
    // rootProject/build.gradle
    ext {
        springCloudVersion = "2024.0.0"
        springDocVersion   = "2.8.5"
    }
    • 하위 모듈에선 implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:${rootProject.ext.springDocVersion}" 형태로 적용
  3. Gradle 빌드 후 테스트
    • ./gradlew clean build 수행 → 애플리케이션 재기동 → /v3/api-docs 정상 동작 확인

[느낀 점]

  • 버전 호환성이 중요한 스프링 생태계에서 BOM(Bill of Materials)이나 ext 등을 통한 버전 관리가 필수
  • NoSuchMethodError”가 뜨면 대부분이 라이브러리 버전 충돌임을 다시 한번 깨달음

참고: SpringBoot 3.4.x, Spring Web 6.2.x, Spring Security 6.4.x와 함께 사용할 때는 SpringDoc 2.8.5 이상이 권장됩니다.

profile
Dreamer

0개의 댓글