博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jar冲突解决方案
阅读量:6826 次
发布时间:2019-06-26

本文共 1058 字,大约阅读时间需要 3 分钟。

  hot3.png

每次依赖的二方库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 上图为去掉冲突之后的实际位置

 155041_Pk0g_128625.jpg

155241_H9ux_128625.jpg

转载于:https://my.oschina.net/dfwang/blog/189862

你可能感兴趣的文章
Java 复用类
查看>>
[CS] 来电处理流程
查看>>
我的友情链接
查看>>
cin.ignore与cin.getline的体验
查看>>
powershell常用命令
查看>>
我的友情链接
查看>>
linux 查看编码格式、用户及组状态
查看>>
squid FATAL: Received Segment Violation...dying.
查看>>
mem调优
查看>>
内核编译安装学习笔记
查看>>
做好数据备份 对你多重要
查看>>
Maven项目导出工程依赖JAR包
查看>>
tomcat修改时区
查看>>
dojo.declare,dojo.define,dojo.require解释
查看>>
浏览器的重绘与重排
查看>>
Web开发必知的八种隔离级别
查看>>
酷炫的显示主页面
查看>>
org.apache.catalina.startup.Catalina start之过程分析
查看>>
CAA如何进行干涉检查?
查看>>
silverlight vs flash
查看>>