NoSuchMethodError
개요
스웨거를 사용하고있는데 글로벌 에러 핸들러를 추가하니 NoSuchMethodError
가 생겼다.
원인
컴파일 시점이 아닌 런타임 시점에 존재하지 않는 메소드를 호출하는 경우에 발생한다.
대표적인 원인은 버전 충돌이다.
예를 들어 A 의존성에서 B의존성의 B메소드를 호출하기로 약속되어있었는데 A 의존성이 버전업되며 더 이상 B 메소드가 아닌 C메소드를 호출하기로 설계되어있는 것이다.
그럼 런타임 환경에서 C메소드를 찾을 수 없으니 해당 메소드를 찾을 수 없다는 예외가 발생한다.
이 경우에는 스프링 부트 버전이 업그레이드 되며 이전에 스웨거가 호출하던 메소드가 이름이 바뀐 것이다.
생각해보니 이전에 사용했던 스웨거 의존성을 그대로 가져왔고 버전이 2.3.X였는데 최신은 2.8.x여서 발생한 오류였다.