Есть полдюжины или около того разных причин для NoSuchMethoError
. Один общий случай возникает, когда вы компилируете, скажем, версию 1.2 файла JAR, но затем работаете с версией 1.1, и между этими двумя версиями существует несовместимость. Это может случиться с простейшими звонками.
Немного сложнее некоторые сценарии, связанные с интерфейсами. Возможно (через некоторые странные пути) для класса implement
интерфейс, для которого он не поддерживает все методы, и переход по пути A или пути B в одном и том же коде (с теми же файлами JAR) может спровоцировать поведение или нет. Это медведь, чтобы разобраться.
Но сначала я посмотрю на файлы JAR, присутствующие в двух средах, и посмотрю, отличаются ли они. В общем (есть исключения) вы всегда должны пытаться использовать файлы JAR самой старой / самой низкой версии в вашей среде компиляции. (Что, конечно, является проблемой, поскольку среда компиляции всегда имеет самую последнюю версию.)