jar冲突解决方案
jar冲突解决方案
匆匆里 发表于4年前
jar冲突解决方案
  • 发表于 4年前
  • 阅读 613
  • 收藏 7
  • 点赞 0
  • 评论 0

华为云·免费上云实践>>>   

摘要: jar冲突解决方案

每次依赖的二方库Or三方库升级经常会遇到jar依赖冲突的问题,此问题经常会搞得大家晕头转向不停的猜测哪里出问题,下面梳理一下解决问题步骤。

以下案例为预警系统升级Napoli2.0 引起上传附件失败。

第一步定位问题:

2014-01-02 18:49:26,962 http-8080-5 [AbstractWebxRootController.java:189] ERROR : Error occurred while process request /quickview/upload/upload.htm

java.lang.NoSuchMethodError: org.apache.commons.io.output.DeferredFileOutputStream.<init>(ILjava/lang/String;Ljava/lang/String;Ljava/io/File;)V

        at **********.upload.impl.cfu.AbstractFileItem.getOutputStream(AbstractFileItem.java:562)

 

分析上面日志会看到三个信息

AbstractWebxRootController  日志输出位置

DeferredFileOutputStream      出错类(因为此类在多个jar中出现导致jar冲突)

AbstractFileItem                       异常跑出类

第二步 配置环境获取 DeferredFileOutputStream 具体使用jar 的路径

AbstractFileItem.java:562 打断点

找出Expressions视图(Window->show view ->Expressions)

添加表达式:DeferredFileOutputStream.class.getProtectionDomain().getCodeSource().getLocation();

 

第三部 进行debug 如最后图所示

 

第四步:排除冲突

经过上面三步 定位到使用的jar 后排除掉

方法一:使用eclipse 中pom依赖关系查看定位 

方法二:使用cmd命令排除,mvn dependency:tree >tree.txt

最后改pom 代码,这里就不列出来了

 

实际错误为 commons.is-1.3.1.jar 上图为去掉冲突之后的实际位置

 


共有 人打赏支持
粉丝 10
博文 9
码字总数 1807
作品 2
×
匆匆里
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: