了解 NoSuchMethod 异常中的方法签名

我得到了这个异常,但解决了它。

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

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

谢谢。


答案 1

键入签名 - 取自此页面

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

答案 2

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

方法是构造函数,方法是静态初始化块。参数类型按@gkamal列出,添加的值为 void。名义上的构造函数返回,这是在签名末尾的原因。<init><cinit>VvoidV

BTW:也许具有讽刺意味的是,这是很长的,而且是针对类的,而对于Java类来说,它可能是很长 ;)的。JLLJ