理解NoSuchMethod异常中的方法签名



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

java.lang.NoSuchMethodError: antlr.NoViableAltForCharException.<init>
(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),但未能在类中找到。

<init>方法是构造函数,<cinit>方法是静态初始化块。参数类型由@gkamal列出,V为空。理论上,构造函数返回void,这是V出现在签名末尾的原因。

BTW:也许具有讽刺意味的是,J代表长,L代表类,而L代表长,J代表Java类。div;)

参见types docs。

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

相关内容

最新更新