Как очевидно из названия, программа пытается вызвать метод, которого не существует. В большинстве случаев это приводит к ошибке еще на этапе компиляции. Но в некоторых ситуациях о проблеме становится известно только во время выполнения, и тогда выбрасывается это исключение.
Вариантов таких ситуаций два. Либо проект был изменен и частично перекомпилирован; либо программа несовместима с внешней зависимостью: например неправильная версия jar-библиотеки в
classpath.
Исключение
NoSuchMethodError наследуется от
LinkageError. Все такие ошибки – признаки несовместимых изменений после компиляции класса.
Не следует путать эту ошибку с
NoSuchMethodException – исключением, которое случается при попытке вызвать несуществующий метод с помощью
Reflection API. Важное отличие в том, что это не
Error, его
можно ловить и обрабатывать.