NoSuchDynamicMethodException

NoSuchDynamicMethodException (동적 메서드를 찾지 못한 예외)

콜 사이트를 사용 가능한 어떤 GuardingDynamicLinker로도 연결할 수 없을 때, 호출 시점에 던져지는 예외입니다. Dynalink에서 링크 실패를 나타내는 대표적인 예외예요.

출처: Java API Reference

본문

동적 링크 과정에서 DynamicLinker가 관리하는 모든 링커를 시도했는데도 해당 호출을 처리할 링커를 찾지 못하면, 이 예외가 발생해서 링크가 실패했음을 알립니다. 예를 들어 BeansLinker 같은 폴백 링커까지 동원됐는데도 요청한 프로퍼티나 메서드를 해석하지 못하는 경우가 이에 해당해요.

분류상 RuntimeException을 상속받으므로 체크 예외가 아닙니다. 즉 메서드 선언에 throws로 명시하지 않아도 되고, 런타임에 발생해 호출 실패를 전달합니다.

이 예외가 발생했다는 것은 콜 사이트가 어느 링커에게도 해석되지 않았다는 뜻이므로, 보통 언어 런타임 구현이나 링커 설정에 문제가 있음을 시사합니다.

예를 들어 BeansLinker 같은 폴백 링커조차 등록되지 않았거나, 요청한 연산·이름이 대상 객체에 존재하지 않는 경우가 이에 해당해요. Throwable에서 상속받은 getMessage(), printStackTrace() 등의 메서드로 오류 내용을 파악할 수 있습니다.

생성자

  • NoSuchDynamicMethodException(String message) — 메시지를 지정해 새 예외를 만듭니다.

Throwable에서 상속받은 getMessage(), printStackTrace() 등의 메서드를 그대로 사용할 수 있어요.

더 알아보기

Java 공식 API