IncompatibleClassChangeError: class ClassMetadataReadingVisitor has interface ClassVisitor as super class
Solution 1:
This error happens when the loaded class i.e. ClassMetadataReadingVisitor
does not respect the contract of inherited abstract class or interface i.e. ClassVisitor
.
Looks like at load time different versions of the above classes are getting loaded in your case.
Seems you have new spring-core jar and old spring-asm jar in your application. ClassMetadataReadingVisitor
class is getting loaded from spring-core and ClassVisitor
from spring-asm.
Please check using maven dependency:tree
command to see the dependent jars.
Solution 2:
In spring version > 3.2.0, you no longer need to explicitly include spring-asm
since it has already been included in spring-core
.
Remove spring-asm
from your build definition and ensure that spring-core
is there.
http://static.springsource.org/spring-framework/docs/current/spring-framework-reference/html/migration-3.2.html#migration-3.2-inline-asm
Solution 3:
This error usually shows up when incomptiable versions of jars are used, for example spring-asm
and spring-core
. Have a look at forum.springsource.org/showthread.php?133341