文档章节

jar冲突解决方案

匆匆里
 匆匆里
发布于 2014/01/03 15:53
字数 329
阅读 645
收藏 7

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

 


© 著作权归作者所有

共有 人打赏支持
匆匆里
粉丝 13
博文 9
码字总数 1807
作品 2
杭州
程序员
私信 提问
HTTP Status 500 - Unable to compile class for JSP解决方案

产生问题分析: 使用maven对jar包进行管理,因此当使用SpringMVC框架的时候肯定会手动的配置 servlet-api.jar 、jsp-api.jar等jar包到项目中,否则一些jsp肯定会无情的报错(找不到对应jar包...

lybb_lbb
01/11
0
0
使用httpClient的post发送数据时候错误:cannot inherit from final class

在使用httpClient发送post请求的时候错误信息:httpcliecannot inherit from final classnt java.lang.verifyerror: 本人遇到这种问题解决方案: 在网上查询了很多。发现有些人说是jar冲突导...

凯哥java
2016/08/30
38
0
WebLogic 部署项目,jar包冲突怎么解决?

背景: 在tomcat部署,项目A一切运行正常。部署到WebLogic后,启动节点项目出现了异常,详情如下。 原始异常 初步判断问题出现的原因: weblogic 自带jar包和项目中的jar包冲突 百度得到集中...

枪炮玫瑰
2016/05/23
1K
3
关于项目文件修改后tomcat提示文件被锁的解决方案

本人小菜一枚,刚进一家企业实习,今天用三大框架搭建环境时,由于有jar包冲突就在项目lib文件夹中删了几个有冲突的jar包,删完之后发现该项目无论怎么修改,运行结果始终停留在一开始的运行...

dengxin919820
06/28
0
0
Tomcat报java.lang.VerifyError错误

调试网页时候发现报这个错误:java.lang.VerifyError错误。 google了下,看网友们的评述感觉是的jar包的问题,于是仔细检查自己的情况; 发现了个奇怪的地方,可能是自己不小心拖动了jar包导...

zhengguogaun
2013/06/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

/etc/profile和/etc/environment的区别

/etc/profile 文件 当一个用户登录Linux系统或使用 su 命令切换到另一个用户时,设置用户环境第一个读取的文件就是 /etc/profile ,此文件为系统全局变量配置文件,且仅仅在第一次登录系统时...

calmsnow
13分钟前
0
0
rabbitMQ日常管理(转)

一、网页登录方法 http://127.0.0.1:15672/ 用户名和密码默认为guest/guest 用java代码去连接rabbitmq用的端口是5672 二、rabbitMQ基本概念 RabbitMQ是一个开源的AMQP实现,服务器端用Erlan...

__HuWei
19分钟前
1
0
gitlab cicd

https://docs.gitlab.com/ee/ci/docker/using_docker_build.html

kut
19分钟前
0
0
使用Prometheus+Grafana监控

一、介绍Prometheus Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活...

xtof
20分钟前
0
0
EOS RPC API官方文档中文版【1.5版】

EOS RPC API是应用访问EOS区块链上智能合约的必备开发接口,根据所实现插件的不同,EOS RPC API被归入不同的分组: CHAIN:由chain_api_plugin实现,主要提供区块链数据的访问功能 HISTORY:...

汇智网教程
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部