NoSuchMethodError в мобильниках SccpAddress на Glassfish - PullRequest
1 голос
/ 16 ноября 2011

org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: org.mobicents.protocols.ss7.sccp.parameter.SccpAddress.<init>(Lorg/mobicents/protocols/ss7/indicator/RoutingIndicator;ILorg/mobicents/protocols/ss7/sccp/parameter/GlobalTitle;I)V

Странно то, что я работаю на одном и том же наборе библиотек JAR Mobicents Protocol на компьютере разработчика, но получаю это на сервере.

Строка, вызывающая проблемы:

SccpAddress localAddress = new SccpAddress(RoutingIndicator.ROUTING_BASED_ON_DPC_AND_SSN, Controller.LOCAL_SPC, localGT, Controller.SSN_CAP);

И очень похож на тот, который используется в их тестовых случаях. Я получил ту же ошибку, когда попробовал и эту строку дословно.

Я получил ту же ошибку при попытке использовать метод декодирования в SccpAddressCodec с допустимым байтовым массивом.

Я использую версию 1.0.0.CR1 стека протоколов Mobicents SS7.

Ответы [ 2 ]

0 голосов
/ 17 ноября 2011

К вашему сведению: старый пакет jar, поставленный третьей стороной, включал в себя некоторые из более ранних версий классов mobicents, включая те, которые давали мне эти проблемы.

Это было причиной проблем. Я считаю, что дело закрыто, но все же благодарю Дэниела Р. Хикса за то, что он все-таки правильно понял.

0 голосов
/ 16 ноября 2011

Есть полдюжины или около того разных причин для NoSuchMethoError. Один общий случай возникает, когда вы компилируете, скажем, версию 1.2 файла JAR, но затем работаете с версией 1.1, и между этими двумя версиями существует несовместимость. Это может случиться с простейшими звонками.

Немного сложнее некоторые сценарии, связанные с интерфейсами. Возможно (через некоторые странные пути) для класса implement интерфейс, для которого он не поддерживает все методы, и переход по пути A или пути B в одном и том же коде (с теми же файлами JAR) может спровоцировать поведение или нет. Это медведь, чтобы разобраться.

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

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