zoukankan      html  css  js  c++  java
  • 20180403_调bug_大地保险_jar包冲突

    一、异常现象

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

  • 相关阅读:
    739. Daily Temperatures
    556. Next Greater Element III
    1078. Occurrences After Bigram
    1053. Previous Permutation With One Swap
    565. Array Nesting
    1052. Grumpy Bookstore Owner
    1051. Height Checker
    数据库入门及SQL基本语法
    ISCSI的概念
    配置一个IP SAN 存储服务器
  • 原文地址:https://www.cnblogs.com/shirui/p/8709020.html
Copyright © 2011-2022 走看看