20180403_调bug_大地保险_jar包冲突
一、异常现象
他们程序在本地通过java形式直接跑起来的时候,是正常的。
但是测试服务器上,程序跑到一半就不继续往下走了,而且,也不报错,日志里面没有任何信息。
二、异常解决
1.核心思想
抽丝剥茧,层层逼近。缩小bug出现的范围。
2.异常解决过程
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包冲突导致的呢?删掉一个试试,发现程序正常了
三、参考资料
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Object::hashCode的返回值是不是对象的内存地址?
某一天,和小伙伴之间的话题不知怎么转到如何实现Object::hashCode上,于是就有了这篇文章。 有什么好讨论的呢,取对象的内存基址不就挺好的吗?方便又高效。且看下文的讨论 当GC发生时…… JavaDoc中描述了Object::hashCode的三个约束,其中要求对象不变时其hash code就应该不变,Object本身没什么属性可变的,自然hash code也就不会变。而Java是自带GC的语言,大家都知道。某些GC算法,比如Copy,比如Mark-Compact都会移动对象,自然地对象的基址也会改变,基于内存基址实现hashCode返回值就有可能在GC后变了。 我们还是假设就用对象内存基址做hashCode的返回值,这样通常也不会有什么问题,毕竟直接调用hashCode方法等场景少之又少。直到遇到以下场景 Object obj = new Object(); // allocated at 0x02 Map<Object, String> map = new HashMap<>(); // 16 slots map.put(obj, "a1"); /...
- 下一篇
ZooKeeper监控工具(六)
之前说了那么多配置信息,具体做的怎么样,还需要真正的获取ZooKeeper的运行时信息才行。这里介绍ZooKeeper的监控。 与文无关 有如下方式: 使用内置的四字命令来获取健康状态信息 使用JMX查看运行状态 使用Exhibitor 使用Sass 四字命令 最简单的监控方式就是使用ZooKeeper的四字命令,你可以直接通过telnet或者nc命令查看状态。 四字命令 四字命令 四字命令 常用的四字命令如下: conf: 打印ZooKeeper的配置信息 cons: 列出所有的客户端会话链接 crst: 重置所有的客户端连接 dump: 打印集群的所有会话信息,包括ID,以及临时节点等信息。用在Leader节点上才有效果。 envi: 列出所有的环境参数 ruok: "谐音为Are you ok"。检查当前服务器是否正在运行。 stat: 获取ZooKeeper服务器运行时的状态信息,包括版本,运行时角色,集群节点个数等信息。 srst: 重置服务器统计信息 srvr: 和stat输出信息一样,只不过少了客户端连接信息。 wchs: 输出当前服务器上管理的Watcher概要信息 w...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6