В программе я использую две внешние библиотеки jar.
Во внешней библиотеке X
есть класс, вызывающий метод m
класса в библиотеке Y
. Библиотека X
была скомпилирована с версией 1.0 библиотеки Y
. Однако, поскольку я использую библиотеку Y
для других целей в своем коде, я предпочел использовать ее последнюю версию (скажем, 5.0).
Моя проблема в том, что когда я выполняю код, библиотека X
жалуется, что метод m
больше не существует (выдает ошибку NoSuchMethod). Тем не менее, метод есть.
Проблема может быть связана с тем, что я использую более новую версию библиотеки Y
, чем та, которая присутствовала во время компиляции? (хотя и обратно совместимый, с другим байт-кодом?). Если это так, то я буду немного озадачен, так как думал, что вызовы java-методов выражаются в байт-коде в виде символических ссылок (например, сигнатур методов), а не в виде прямых ссылок (например, смещений), но я мог бы неправильно понять что-то.
Спасибо за любые разъяснения!