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 Protocol JAR库,但我在服务器上收到了这个。
导致问题的一行是:
SccpAddress localAddress = new SccpAddress(RoutingIndicator.ROUTING_BASED_ON_DPC_AND_SSN, Controller.LOCAL_SPC, localGT, Controller.SSN_CAP);
与他们的测试案例中使用的非常相似。当我逐字逐句地尝试该行时,我收到了同样的错误。
我尝试在SccpAddressCodec
中使用带有有效字节数组的解码方法时收到了同样的错误。
我使用的是Mobicents SS7 Protocols堆栈的1.0.0.CR1版本。
答案 0 :(得分:0)
NoSuchMethoError
有六种不同的原因。例如,当您针对JAR文件编译版本1.2但是然后针对版本1.1运行时,会发生一个常见问题,并且这两个版本之间存在不兼容性。这可以通过最简单的调用来实现。
接口周围的一些场景稍微复杂一些。有可能(通过一些奇怪的路径)一个类到implement
一个接口,它不支持所有的方法,并且在相同的代码(具有相同的JAR文件)中沿着路径A或路径B走下去会引起行为与否。这些都是值得理清的。
但我首先要看两个环境中存在的JAR文件,看看它们是否不同。通常(有例外),您应该始终尝试在编译环境中使用最旧/最低版本的JAR文件。 (当然,这是一个问题,因为编译环境总是倾向于拥有最新的东西。)
答案 1 :(得分:0)
仅供参考:由第三方提供的旧jar包包括一些早期版本的mobicents类,包括那些给我这些问题的人。
这是造成麻烦的原因。我认为这个案子已经结案,但仍然感谢Daniel R Hicks毕竟是正确的。