popcoder
popcoder

Reputation: 3070

Understanding method signature in NoSuchMethod exception

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.

Upvotes: 16

Views: 11719

Answers (4)

user8598788
user8598788

Reputation: 1

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.

Upvotes: 0

gkamal
gkamal

Reputation: 21000

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

Upvotes: 31

Peter Lawrey
Peter Lawrey

Reputation: 533550

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. ;)

Upvotes: 8

Dave Newton
Dave Newton

Reputation: 160211

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

Upvotes: 2

Related Questions