Question

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!

Was it helpful?

Solution

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!

OTHER TIPS

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.

Just to leave track of a different cause.

Always on an application server (in my case WildFly 10), you might be loading the same library on a modules and on the EAR lib. If this library contains an interface that needs to be implemented by the module, this might cause a conflict since the same class / interface loaded by two different class loaders are considered to be two different types.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top