java.lang.IncompatibleClassChangeError: Implementing class的问题原理解析

Caused by: java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader 1. r u n ( U R L C l a s s L o a d e r . j a v a : 362 ) a t j a v a . s e c u r i t y . A c c e s s C o n t r o l l e r . d o P r i v i l e g e d ( N a t i v e M e t h o d ) a t j a v a . n e t . U R L C l a s s L o a d e r . f i n d C l a s s ( U R L C l a s s L o a d e r . j a v a : 361 ) a t j a v a . l a n g . C l a s s L o a d e r . l o a d C l a s s ( C l a s s L o a d e r . j a v a : 424 ) a t s u n . m i s c . L a u n c h e r 1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher 1.run(URLClassLoader.java:362)atjava.security.AccessController.doPrivileged(NativeMethod)atjava.net.URLClassLoader.findClass(URLClassLoader.java:361)atjava.lang.ClassLoader.loadClass(ClassLoader.java:424)atsun.misc.LauncherAppClassLoader.loadClass(Launcher.java:338)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:275)
at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:315)
… 37 more
当出现Implementing class的时候 实际上是出现了两个class文件的冲突
网上常说的几种问题是:
1.JDK的Jar包与项目依赖Jar包冲突,例如本案例Mysql驱动冲突。

2.Tomcat问题,参考博客 http://www.cnblogs.com/xiaoming0601/p/6189360.html

3.jar包版本冲突,这个比较明显在web项目lib包下或maven项目pom.xml依赖中查看是否存在多个版本的Jar包
下面我说一下另外一种情况
就是自己写的class冲突,也就是出现了类名相同的class
一般情况下不会出现该问题,但如果使用了利用反射来创建对象的框架,就有可能出现该问题。所以当出现Implementing class时,如果以上三种情况都解决不了的时候,就仔细排查一下自己写的类有没有重复命名的情况。

你可能感兴趣的:(异常处理,idea)