您现在的位置是:首页 > 文章详情

20180403_调bug_大地保险_jar包冲突

日期:2018-04-02点击:302

一、异常现象

他们程序在本地通过java形式直接跑起来的时候,是正常的。

但是测试服务器上,程序跑到一半就不继续往下走了,而且,也不报错,日志里面没有任何信息。

 

二、异常解决

1.核心思想

抽丝剥茧,层层逼近。缩小bug出现的范围。

 

2.异常解决过程

参考:java根据jar包反编译后修改再打包回jar的做法

 

2.1 反编译jar包

使用jd-gui反编译jar包(A),复制反编译后的class文件里的内容

 

2.2 修改java文件

在eclipse中新建一个工程,新建一个java类,类名和class文件名称一致,将class文件的内容粘贴进来

然后再修改java文件的内容。这里主要是增加一些打印语句

 

2.3 eclipse打jar包

通过eclipse将2.2中的工程打成一个jar包(B),用解压工具(如好压)解压

再将原本的jar包(A),用解压缩工具解压得到文件夹C。

将修改后class文件替换掉文件夹C中的class文件

 

2.4 命令行打jar包

从命令行进入到文件夹C,执行打包命令:

jar -cvf bbb.jar * //将文件夹C中的所有文件打包进bbb.jar

 

2.5 替换jar

将修改后的jar包替换掉原工程中的jar包。

 

2.6 得到结果

反复执行以上操作,发现最终出现问题的地方是:

 MongoClientURI uri = new MongoClientURI(this.mongoUri, new MongoClientOptions.Builder().connectionsPerHost(connectionsPerHost).serverSelectionTimeout(serverSelectionTimeout));

 

程序执行到这里就不继续往下执行了,然后可以发现 MongoClientURI 这个类是  mongoDB的。那么可能是mongoDB出问题了。

 

是什么问题呢?为什么本地是正常的,但是测试服务器上就出异常了呢?这两个地方mongoDB 有什么不同吗?

 

然后去测试服务器上看看,发现测试服务器上mongoDB的驱动有两个。

 

那么是不是因为jar包冲突导致的呢?删掉一个试试,发现程序正常了

 

 

三、参考资料

1.java根据jar包反编译后修改再打包回jar的做法

 

原文链接:https://yq.aliyun.com/articles/621313
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章