Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Interpreting the "Incompatible argument to function" exception message

A quick question regarding the java.lang.VerifyError exception. Suppose I get an error that looks like this:

Java call terminated by uncaught Java exception: java.lang.VerifyError:(class: com/.../MyClassName, method: <init> signature: (Ljava/io/Reader;)V) Incompatible argument to function

Could you help me with understanding what the "init" and what the "(Ljava/io/Reader;)V)" parts pertain to? They don't look like method names or signatures to me, but I'm not too familiar with java. Thanks!

like image 327
Zoomzoom Avatar asked Jun 14 '12 19:06

Zoomzoom


2 Answers

This error means that somewhere in your code, you tried to call a constructor (the <init> method) passing in the wrong set of arguments. The expected argument was a Reader object.

This probably meant that you previously compiled a class file, then changed the class definition in some way without recompiling the class file. Consequently, your code tries to call a function that no longer exists. Try recompiling the code and see if that fixes it.

Hope this helps!

like image 183
templatetypedef Avatar answered Oct 17 '22 09:10

templatetypedef


If you are running your application on an application server, it could be a class loading problem.

You compiled your code against a library and when you try to run your code it is running against a different (older?) version of the library.

The older library probably doesn't have that method or constructor.

like image 45
Udo Held Avatar answered Oct 17 '22 10:10

Udo Held