shm-1255
项目添加了新的依赖包之后启动时报错了。部分报错内容如下:
Caused by: java.lang.IncompatibleClassChangeError: Implementing class at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:791) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:3175) at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:1372) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1860) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1734) at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2451) at java.lang.Class.getDeclaredMethods(Class.java:1810) at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:609) at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:521) at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:507) at

首先说结论:就是依赖版本号冲突引起的。

再说解决过程。一开始以为是包的问题,就把包放到别的环境,结果能启动,又换到另一个环境不能启动,而且包在自己机器上也能正常启动。这里是给我们误导最大的地方,以为是环境的问题。比较了两个环境的tomcat和jdk之后发现jdk的版本不一样;
然后方向放在了jdk版本上,最后当然是无功而返。
上网搜了搜基本都是版本号冲突引起的,然后研究 error log 才去比较各个依赖的版本号问题。
但是由于没有研究当时的error log 所以一直在盲目的查找依赖。但是依赖包有100多个,墨迹的找了三天还是没解决。再去研究error log 发现在某个特定的依赖包那报的错才定位到这个包,找到了包
引用的依赖 asm 和新加入的包引用的依赖版本号有了冲突.原先引用的asm 版本号是3.1的,新引入的是5.0的,最后研究这个包发现还有一个依赖stax和新引入的也是冲突的。

在这次解决过程中,犯了很多错误。对于报错日志没有重视起来,其实报错日志才是解决问题的首先参考依据,而不是自己的臆测。
也学到了不少东西,查看依赖冲突可以在pom文件中下面红框中快速定位到重复的依赖引用,方便取舍。

 





分类:

技术点:

相关文章:

  • 2021-04-16
  • 2021-07-27
  • 2021-05-30
  • 2021-09-08
  • 2021-10-07
  • 2021-10-17
  • 2021-11-01
  • 2021-07-31
猜你喜欢
  • 2021-11-19
  • 2021-11-15
  • 2021-11-15
  • 2021-11-15
  • 2021-05-08
  • 2021-09-27
  • 2021-10-03
相关资源
相似解决方案