NoSuchMethodError — 존재하지 않는 메서드를 호출하려 할 때
NoSuchMethodError — 존재하지 않는 메서드를 호출하려 할 때
NoSuchMethodError는 애플리케이션이 클래스의 특정 메서드(static 또는 instance)를 호출하려 했는데, 그 클래스에 더 이상 그 메서드의 정의가 없을 때 던져지는 에러예요.
본문
평소에는 컴파일러가 존재하지 않는 메서드 호출을 막아 주지만, 클래스 정의가 비호환적으로 바뀌면 런타임에서 이 에러를 만날 수 있어요. 예를 들어 라이브러리가 업데이트되면서 어떤 메서드가 이름이 바뀌거나 제거됐는데, 옛 바이너리가 그 메서드를 여전히 호출하는 경우에요.
상속 구조는 다음과 같아요.
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)— 지정된 상세 메시지로 생성해요.