Мы всегда настраиваем наш производственный (и QA) процесс сборки для очистки всех классов и перекомпиляции именно из-за подобных проблем. Иногда эвристика зависимостей компилятора ошибается (особенно когда у вас есть статическое конечное поле, определенное как константа, где компилятор просто оптимизирует всю зависимость).
В этом случае, хотя код, использующий метод, не изменился (фактически, особенно потому, что он не изменился), скомпилированный байт-код не разрешается в правильную сигнатуру метода и не может найти то, что искал. На уровне байт-кода есть ссылка на тип возврата, который JVM ищет и не находит.