Understanding method signature in NoSuchMethod exception

▼魔方 西西 提交于 2019-11-30 06:40:49

问题


I got this exception but resolved it.

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

But i'd like to know how to interpret these kind of messages: "(CLjava/lang/String;II)V" Also, does this "init" mention the constructor of NoViableAltForCharException class??

Thanks.


回答1:


Type Signatures - taken from this page.

The JNI uses the Java VM’s representation of type signatures. Table 3-2 shows these type signatures.

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

For example, the Java method:

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

has the following type signature:

(ILjava/lang/String;[I)J



回答2:


Its looking for a constructor antlr.NoViableAltForCharException(char, String, int, int) but fails to find it in the class.

The <init> method is the constructor and the <cinit> method is the static initialisation block. The parameter types are listed by @gkamal with the addition that V is void. Notionally constructors return void which is the reason for the V at the end of the signature.

BTW: It is perhaps ironic that J is for long and L is for class, when it could have been L for long and J for Java class. ;)




回答3:


See the types docs. It's a convenient shorthand notation.




回答4:


You could have an outdated .jar file on the server vs what you're compiling your code with. Double check that all .jar files on the server are same as the ones you're compiling with.



来源:https://stackoverflow.com/questions/8343593/understanding-method-signature-in-nosuchmethod-exception

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!