NoSuchMethodError — 존재하지 않는 메서드를 호출하려 할 때

NoSuchMethodError — 존재하지 않는 메서드를 호출하려 할 때

NoSuchMethodError는 애플리케이션이 클래스의 특정 메서드(static 또는 instance)를 호출하려 했는데, 그 클래스에 더 이상 그 메서드의 정의가 없을 때 던져지는 에러예요.

출처: Java API Reference

본문

평소에는 컴파일러가 존재하지 않는 메서드 호출을 막아 주지만, 클래스 정의가 비호환적으로 바뀌면 런타임에서 이 에러를 만날 수 있어요. 예를 들어 라이브러리가 업데이트되면서 어떤 메서드가 이름이 바뀌거나 제거됐는데, 옛 바이너리가 그 메서드를 여전히 호출하는 경우에요.

상속 구조는 다음과 같아요.

java.lang.Object
  java.lang.Throwable
    java.lang.Error
      java.lang.LinkageError
        java.lang.IncompatibleClassChangeError
          java.lang.NoSuchMethodError

리플렉션에서 메서드를 못 찾을 때 나오는 NoSuchMethodException(checked exception)과는 다른, 링크 에러 계열이에요.

생성자

  • NoSuchMethodError() — 상세 메시지 없이 생성해요.
  • NoSuchMethodError(String s) — 지정된 상세 메시지로 생성해요.

더 알아보기 (Learn more)