1

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

奇怪的是,我在开发机器上运行同一组 Mobicents 协议 JAR 库,但我在服务器上收到了这个。

导致问题的行是:

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

并且与他们的测试用例中使用的非常相似。当我逐字尝试该行时,我收到了同样的错误。

当我尝试使用 decode 方法并SccpAddressCodec使用有效的字节数组时,我收到了同样的错误。

我正在使用 Mobicents SS7 协议栈的 1.0.0.CR1 版本。

4

2 回答 2

0

有六种左右不同的原因NoSuchMethoError。当您针对 1.2 版(例如,JAR 文件)进行编译但随后针对 1.1 版运行时,会发生一种常见的情况,并且这两个版本之间存在不兼容性。这可能发生在最简单的调用中。

稍微复杂的是一些围绕接口的场景。一个类可能(通过一些奇怪的路径)到implement一个它不支持所有方法的接口,并且在相同的代码(具有相同的 JAR 文件)中沿着路径 A 或路径 B 可能会引发行为或不。这些是需要整理的熊。

但我会首先查看两个环境中存在的 JAR 文件,看看它们是否不同。通常(有例外)您应该始终尝试在编译环境中使用最旧/最低版本的 JAR 文件。(当然,这是一个问题,因为编译环境总是倾向于拥有最新的东西。)

于 2011-11-16T18:07:40.760 回答
0

仅供参考:第三方提供的旧 jar 包包括一些早期版本的 mobicents 类,包括给我这些问题的那些。

这就是造成麻烦的原因。我认为这个案子已经结案,但仍然感谢 Daniel R Hicks 把它做好了。

于 2011-11-17T16:40:18.670 回答