开发SSM项目引入shrio框架报了一个奇怪的异常,找了大半天百思不得其解!
java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2529)
at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:872)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1321)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.getDeclaredMethods(Class.java:1975)
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:613)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:524)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:510)
.....................................................
凭着经验怀疑错误问题有以下几种可能:
1.项目中导入的jar包冲突
2.maven项目中同一个依赖有两个不同的版本号
经过我一番苦逼的测试和寻找,终于发现:
结果:原来是导入的shiro依赖中 shrio-quartz依赖 与quartz依赖版本号不一致。
发现两个版本号
虽然,它们的坐标不一样,但都是定时任务jar包的依赖,我果断删除了其中的一个,最后重新运行一下项目,问题终于搞定!
总结一下:像这种类似的错误,报出的异常,还不知道是哪个类的问题,一般的都项目jar包依赖或运行环境或开发环境等。