Ложный NoSuchMethodError - PullRequest
       12

Ложный NoSuchMethodError

2 голосов
/ 22 июня 2011

Получили ошибку NoSuchMethodError в одном из наших классов простым методом получения. Странно то, что мы можем отлаживать код и видеть, что ошибка возникает в отладчике (переступая через соответствующую строку), однако мы также можем использовать IDE (IntelliJ IDEA), чтобы увидеть, что метод существует.

Выполнение xxxx.getYYY() оценивает штраф через оценщик выражений IDE. И, взяв xxxx.getClass().getMethods(), мы увидим метод getYYY() в списке. Мы попытались очистить все встроенные файлы, выходные каталоги IDE, кэши IDE, перезагрузку и т. Д., И, похоже, ничего не помогло.

Я бы понял, что NoSuchMethodError произошел бы, если бы мы скомпилировали что-то, но тогда во время выполнения был найден другой Jar / класс. Но это не объясняет мне, почему во время выполнения во время отладки до рассматриваемой строки мы можем видеть, что метод есть, но переход по строке вызывает исключение.

Пробовал воспроизводить на другой машине, но не воспроизводит.

Кто-нибудь знает, что здесь может происходить?

Ответы [ 2 ]

2 голосов
/ 22 июня 2011

Скорее всего, вы используете в IntelliJ не те версии кода, которые вы редактируете.Я часто сталкиваюсь с этой проблемой, когда открывается множество проектов maven с разными версиями в зависимости от того, что я редактирую.IntelliJ может запутаться (или я запутался в том, какую версию я на самом деле использую)

0 голосов
/ 04 сентября 2015

NoSuchMethodError - Это в основном происходит во время выполнения.Я столкнулся с этой ошибкой, причина была в несовместимых версиях библиотек asm и cglib в моем classpath.

Библиотеки asm и cglib используются многими средами, такими как hibernate, spring, hadoop, для манипулирования байтовым кодом во время выполнения.

Classloader всегда ссылается на первую версию фляги на пути к классам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...