NoSuchFieldError — 존재하지 않는 필드에 접근하려 할 때
NoSuchFieldError — 존재하지 않는 필드에 접근하려 할 때
NoSuchFieldError는 애플리케이션이 객체의 특정 필드에 접근하거나 수정하려 했는데, 그 객체에 더 이상 그 필드가 없을 때 던져지는 에러예요.
본문
평소에는 컴파일러가 존재하지 않는 필드 접근을 막아 주므로, 이 에러는 클래스 정의가 비호환적으로 바뀌어 런타임에서야 드러나는 경우가 많아요. 예를 들어 어떤 클래스의 필드가 라이브러리 업데이트에서 제거됐는데, 옛 바이너리가 그 필드를 여전히 참조하는 식이에요.
상속 구조는 다음과 같아요.
java.lang.Object
java.lang.Throwable
java.lang.Error
java.lang.LinkageError
java.lang.IncompatibleClassChangeError
java.lang.NoSuchFieldError
NoSuchFieldError는 링크 에러 계열의 하나로, 리플렉션에서 필드를 못 찾을 때 나오는 NoSuchFieldException(checked exception)과는 성격이 달라요.
생성자
NoSuchFieldError()— 상세 메시지 없이 생성해요.NoSuchFieldError(String s)— 지정된 상세 메시지로 생성해요.