被jar包冲突害惨了

第一次搭建项目,选择了springmvc+spring4+hibernate4的框架。搭建过程中各种不顺,由于第一次碰到jar包冲突的问题,在这里卡了很久,现在记录下来。

 

先报错:org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException,按照网上搜到的材料,是缺少aspectjweaver.jar,导入后,仍然报错。

花了一晚上的时间重新定位错误,发现在UserServiceImpl类中,一旦加上@transactional 标签就出现上述错误,去掉@transactional 就不报错。一度怀疑我的xml配置有问题,又花了一天的时间重新研究了spring的xml配置文件,仔细查看了<aop>和<tx>标签的配置,反复修改仍然报错。期间甚至被误导以为是Spring中的AOP以及声明式事务 @Transactional无法拦截事务,然后又搜了相关的文章,http://www.iteye.com/problems/2646,报错依旧。

在排除各种原因,尝试各种方法后,又回到jar包的问题,存在“jar包导入了,但是编译时不存在”的问题,然后我怀疑maven出问题了!或许是依赖的包没下载全,或者文件缺失,我到本地.m2仓库下,找到aspectjweaver文件夹,哈哈,空也!正当我为找到病因高兴时,突然发现,这是1.5.4的版本,我记得我pom中引用的是1.8的版本啊。。。

又找到这个文件夹,我就知道又错了。每个文件还有sha1,根本就不可能出现下载过程中文件出错的情况。。。我还是不相信maven,然后我把pom中的依赖注释掉了,手动导入这个包到项目lib中,终于!这个错误没了!!!!!可是又诞生了另一个错误了!!spring中的某个类找不到,我又按照这个方法,找到jar包,取消依赖,手动导入到lib中,只到所有的错误消失!

 

 

 

最后终于在tomcat中跑起来了~~~~兴奋的推到git,记录为“搞定框架”~

 

我真是图样图森破啊,以为这就结束了。。

 

吃过晚饭,给我的舍友秀了一下后,还一切正常。

开始动手写业务,刚写了一个功能,调试就报错了,hibernate的某个类找不到?不应该啊,我明明导入了啊,再次取消maven依赖,手工添加到lib,还是报错!真是坑爹,我把新加的代码全部注释掉,回滚到上次正常跑起来的状态,晕,这次竟然跑不起来了。。。我用git回滚,也跑不起来了!

提交到git之前能跑起来,回滚之后竟然跑步起来?真是怪事。我又检查了下没上传到git的.idea的文件,没问题,排除。

 

 

这个时候,我隐隐觉得什么地方不对了。同样的代码前一次执行和后一次执行竟然不一样?这里代码全是写死的,没有random啥的啊,有违常理啊。那么真相只有一个!某个地方有A,有B,第一次执行了A,第二次执行了B!而且这个AB在我看不到的地方,那是啥,jar包冲突呗!!!!

然后我找到了target文件夹,简直要晕过去了

这冲突的多明显啊!不报错才怪,接着我把所有的依赖全打上,本地项目lib清空,按照 http://www.javaranger.com/archives/1232  在intellij里解决了冲突的包。

 

至此,所有的问题才算解决!

 

总结,以前只是知道,部署到tomcat里时,要把servlet-api和jsp-api两个包删除,那是我接触到的唯一的包冲突的实例。经过这次教训,总算彻底的认识到jar包冲突的问题了:很隐蔽!没有经验根本无法发现,这也是使用maven带来的弊端吧,间接引进的包太多。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值