可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have built a web application using spring-mvc and mongodb as database. I used maven3 to build the application.
Project builds successfully but when application starts I am getting the following error in the logs due to which my application does not start. This used to work few months ago.
Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class
Please let me know if any pointers or if you guys need more information.
回答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.
回答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
回答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
回答4:
I had the same problem and faced it by deleting my spring-data-jpa
dependency from pom.xml
It's already included in the spring-core
dependency.