归约问题定位思路

一、问题描述

开发通过Jone编译部署时,报错如下:

1
2
3
4
5
6
7
8
9
10
11
Exception in thread "main" java.lang.NoSuchFieldError: logger
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:212)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:86)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:687)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:525)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.jd.lsb.platform.PlatForm.run(PlatForm.java:65)
at com.jd.lsb.platform.Main.main(Main.java:21)

二、问题定位

  1. 看异常堆栈是依赖问题,但是异常信息不清晰;
  2. 观察pom.xml最近没有发生变化,对比spring相关包也没有变化;
  3. google上问题的解决大都是修改spring-beans版本;
  4. 最终发现是开发的依赖最近发布的是singleJar,内包含了完整的依赖(内含spring5.x)

通知研发修改后解决。

三、总结

此次问题的解决思路应该参考Jar冲突,但是却没有第一时间走这个思路;
这可能是缺少对过去问题的通用总结和缺少对当前错误的推导式定位思路。

评论