了解NoSuchMethodexception中的方法签名

我得到了这个例外但解决了它。

java.lang.NoSuchMethodError: antlr.NoViableAltForCharException. (CLjava/lang/String;II)V 

但我想知道如何解释这些消息:“(CLjava / lang / String; II)V”另外,这个“init”是否提到了NoViableAltForCharException类的构造函数?

谢谢。

类型签名 – 取自此页面 。

JNI使用Java VM的类型签名表示。 表3-2显示了这些类型的签名。

 Z boolean B byte C char S short I int J long F float D double L fully-qualified-class ; fully-qualified-class [ type type[] ( arg-types ) ret-type method type 

例如,Java方法:

 long f (int n, String s, int[] arr); 

具有以下类型签名:

 (ILjava/lang/String;[I)J 

它正在寻找构造函数antlr.NoViableAltForCharException(char, String, int, int)但未能在类中找到它。

方法是构造函数, 方法是静态初始化块。 参数类型由@gkamal列出,其中V为void。 Notionally构造函数返回void ,这是签名结束时V的原因。

顺便说一句:或许具有讽刺意味的是, J是长期的,而L是为了类,当它可以长LJ为Java类。 ;)

请参阅类型文档 。 这是一种方便的简写符号。

您可能在服务器上有一个过时的.jar文件,而不是您编写代码的文件。 仔细检查服务器上的所有.jar文件是否与您正在编译的文件相同。