jar 包又冲突了?如何快速确定与哪个 jar 包冲突?

  • 解决方法一
  • 解决方法二
  • 水落石出
  • 总结

前段时间写代码的时候想借助一下fastjson的Feature.OrderedField来解决json乱序的问题,只需要增加一个参数即可,像下面这样

try{
  JSON.parseObject("...", Feature.OrderedField)
}catch(Throwable e){
    String loc = "";
     String urlLoc = "";
     try {
       loc =

      <strong>Feature.class.getProtectionDomain().getCodeSource().getLocation().getFile();
      urlLoc =  URLDecoder.decode(loc, "UTF-8");</strong>
   } catch (Throwable e2) {

   }

   logger.info("** loc=" + LOCATION + "; URLLoc=" + URLLOCATION);
}

推荐一个艿艿写的 6000+ Star 的 SpringBoot + SpringCloud + Dubbo 教程的仓库:https://github.com/YunaiV/SpringBoot-Labs

水落石出

最终找到了导致冲突的jar原来是公司自研的消息队列提供的producer client,在这个jar包内部将fastjson的源码直接打到了jar包里面,所以在不同的jar包内竟然出现了包名和类名都一样的class,下面这个图是jar包内部的目录结构,这种使用第三方工具包的方式我也是第一次见,感觉挺坑的(耦合太严重),最终我没有使用fastjson来解决我的问题,而是借助了Gson将这个问题绕过去了。

总结

主要介绍了两种找出冲突jar包的方式,第一种是使用“mvn dependency:tree”的方式,但是这种方式存在局限性,就像前面说到的那种,两个看似不相干的jar包内竟然出现了包名和类名都一样的class,第二种是直接通过class对象获取jar包全路径的方式,这种方式更通用,但是需要改动一点代码。

推荐一个艿艿写的 3000+ Star 的 SpringCloud Alibaba 电商开源项目的仓库:https://github.com/YunaiV/onemall



未经允许不得转载:大自然的搬运工 » jar 包又冲突了?如何快速确定与哪个 jar 包冲突?

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址