一、异常现象

他们程序在本地通过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的做法

20180403_调bug_大地保险_jar包冲突的更多相关文章

  1. java 包冲突解决方法

    1.诊断包冲突 java.lang.NoSuchMethodError: org.apache.commons.io.output.DeferredFileOutputStream.<init& ...

  2. IDEAL葵花宝典:java代码开发规范插件 (maven helper)解决maven 包冲突的问题

    小编说到: 在我们日常开发当中常常我们会遇到JAR包冲突.找来找去还找不到很是烦人.那么所谓的JAR包冲突是指的什么那?JAR包冲突就是-引入的同一个JAR包却有好几个版本. 例如: 项目中引用了两个 ...

  3. 万恶的jar包冲突

    搭了个spring+struts2+mybatis的项目架子, 好久不用myEclipse和tomcat了,生疏了好多. 建议还是去百度一些框架整合的博客,直接使用博客里面给的jar包列表里的jar包 ...

  4. cxf spring restful 问题解决(jar包冲突)

    SEVERE: Context initialization failedorg.springframework.beans.factory.BeanCreationException: Error ...

  5. 为什么项目的jar包会和tomcat的jar包冲突?

    为什么项目的jar包会和tomcat的jar包冲突? 碰到这个问题,猜测tomcat启动时会将自己的lib和项目的lib在逻辑上归并为一个大的lib,但是并没有做版本区分以及去重,这样相同的包可能就有 ...

  6. hadoop+javaWeb的开发中遇到包冲突问题(java.lang.VerifyError)

    1.HDFS + WEB 项目 报java.lang.VerifyError... 异常 抛异常: Exception in thread "main" java.lang.Ver ...

  7. RHEL5.8使用yum安装应用时包冲突的处理

    RHEL5.8使用yum安装应用时包冲突的处理办法记录,总体思路是如果发现包冲突的情形,那么就把冲突的包给删除掉,然后再重新使用yum安装即可. 冲突示例: Transaction Check Err ...

  8. Maven类包冲突终极解决方案

    本文转自:http://ian.wang/106.htm 举例A依赖于B及C,而B又依赖于X.Y,而C依赖于X.M,则A除引B及C的依赖包下,还会引入X,Y,M的依赖包(一般情况下了,Maven可通过 ...

  9. weblogic与axis2 jar包冲突

    1.org.springframework.web.util.NestedServletException: Handler processing failed; nested exception i ...

随机推荐

  1. Python学习笔记2_Python基础

    一.变量(给数据起个名字) 变量是计算机内存中的一块区域,变量可以存储规定范围内的值,而且值可以改变. 1.变量的命名方法 -变量名有字母.数字.下划线组成 -不能以数字开头 -不可以使用关键字 -a ...

  2. FSR薄膜压力传感器使用教程

    FSR薄膜压力传感器教程 本店常用的外形有2种: 圆形: 长条形: 如果用单片机控制建议买带转换的,可以直接接单片机AD口或者数字IO去读取数值: 电压输出的AO接口是模拟量输出,可以接单片机的模拟口 ...

  3. 2.2 使用ARDUINO控制MC20发短信

    需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...

  4. 爬虫二 requests模块的使用

    一.requests模块的介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) #注意:reques ...

  5. 03_Hadoop简单介绍以及版本信息

    一.海量数据: 量:大.数目多,数据量到达PB.ZB级别,条目数到达几十亿条.百亿条 1)存储:分布式,集群的概念,管理(主节点.从节点),HDFS(HadoopDistributedFileSyst ...

  6. hadoop03---nginx+keepalived

    1.1.反向代理 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求 ...

  7. mybatis collection 一对多关联查询,单边分页的问题总结!

    若想直接通过sql实现多级关联查询表结构得有2 个必不可少的字段:id ,parentId,levelId id:主键id, parentId:父id levelId:表示第几级(表本身关联查询的时候 ...

  8. Docker容器技术-创建一个简单的Web应用

    一.创建一个简单的Web应用 1.identicon 基于某个值而自动产生的图像,这个值是IP地址或用户名的散列值. 用途: 通过计算用户名或IP地址的散列值,在网站上提供用于识别用户的图像,以及自动 ...

  9. Bürkert 流体控制系统 (8611 型通用调节器)

    Type Description High-Tech Made EasyThe new universal controller eCONTROL Type 8611 brings an essent ...

  10. hadoop程序在本地模式调试作业

    1.首先下载cygwin,例如安装在该目录下,D:\Program Files\cygwin\ 2.copy linux上的jar包到D:\Program Files\cygwin\home\lib ...