背景:目前正在迭代开发的项目,应用户要求新增一个电子文档转换的功能,即将不标准的excel文件转换为标准的excel文件(标准模板)。

选择:pio ,本项目里面本来就有poi的jar包

问题:项目里的poi的相关jar包版本较低,在使用wps保存过的excel文件,在读取的时候会发报错,使用微软的办公软件保存过的不会。

但是我们在使用高版本的jar包不会发生这种问题。跟进源码发现低版本的jar包,里面写法有点问题,具体不再描述。

解决方法:1.设想直接在项目里面替换上高版本的jar包,要替换就要将poi相关的jar包都要替换,风险性太大,不可取。

2.直接将有问题的那个类拿出来,自己重构,然后编译,再直接将字节码文件进行替换。发现完美解决。又对原有的系统影响性到最小。

总结:

方法二比较完美,在我们迭代开发已经上线的项目的时候,一定要考虑对原有项目的影响,进行风险性评估。

要不然后果很严重哦。

记一次如何解决低版本jar包里面的bug,不适宜替换成高版本的经历的更多相关文章

  1. 直接修改别人jar包里面的class文件 工具:jclasslib

    出于某些原因 需要把别人jar包里面的class修改一下信息 配置文件*.properties MANIFEST.MF 这些东西可以直接用记事本打开修改 然后替换掉就OK.. 在网上游荡了半天,没有找 ...

  2. spring boot 扫描 其他jar包里面的 mapper xml

    启动类配置扫描 goods.mapper为当前项目mapper路径 ,common.mpper为其他jar包. 1. 2.mybatis.mapper-locations=classpath*:map ...

  3. spring3 mvc使用注解方式时,不能扫描jar包里面的类

    使用eclipse export工具时选中Add directory entries可以解决.

  4. Java读取其他jar包里的配置文件

    最近要做个东西,需要自己控制数据库的事物,项目封装的框架,实在是提不起去阅读的兴趣, 就想直接去读框架的底层实现里面的数据连接的配置文件(如:Url,port,username,password等), ...

  5. spring各版本jar包和源码

    spring各版本jar包和源码 spring历史版本源码:https://github.com/spring-projects/spring-framework/tags spring历史jar包和 ...

  6. 【Maven】【IDEA】在idea中开发web项目,解决maven的jar包冲突的方法

    在idea中开发web项目,解决maven的jar包冲突的方法 第一步: 先对项目进行 clean ,再进行install 第二步: 出现NoSuchMethodException,ClassNotF ...

  7. PHP通过php-java-bridge调用JAVA的jar包里class类

    正 文:   有的时候我们需要在PHP里调用JAVA平台封装好的jar包里的class类和方法,一般飘易推荐的做法是采用php-java-bridge做桥接,本文就来介绍一下大致的实现方法. 先简单说 ...

  8. jar包里查找指定的class文件,排查是否存在或重复,工具软件:Java Class Finder

    jar包里查找指定的class文件,排查是否存在或重复,工具软件:Java Class Finder 1,下载工具地址:www.idesksoft.com/classfinder.html,如图: 2 ...

  9. 更新jar包里的配置文件

    更新jar包里的配置文件 起因 从笔记本传了个jar到服务器,运行的时候才发现配置文件一个ip项填错了.本来很简单的问题,maven重新打包就可以了,但是30多M的jar包就因为一个配置项错了又要重新 ...

随机推荐

  1. Castle 整合.NET Remoting

    今天研究了一下Castle的Remoting Facility.记录如下: 微软以前使用COM/DCOM的技术来处理分布式系统架构,通过Client端的Proxy代理程序来呼叫远程Server机器上的 ...

  2. VMware虚拟机NAT(地址转换模式)

    转载于:https://www.linuxidc.com/Linux/2016-09/135521p2.htm 二.NAT(地址转换模式)   刚刚我们说到,如果你的网络ip资源紧缺,但是你又希望你的 ...

  3. LeetCode-Integer Breaks

    Given a positive integer n, break it into the sum of at least two positive integers and maximize the ...

  4. 《JAVA多线程编程核心技术》 笔记:第二章:对象及变量的并发访问

    一.基本概念1.安全的变量和不安全的变量2.脏读的理解3.锁重入:4.锁释放5.死循环:二.synchronized 的理解:三.synchronized 同步方法3.1 同步方法不具有继承性.3.2 ...

  5. SharePoint BI

    本篇博客主要针对SharePoint BI整体结构进行整理,为读者分析几种Sharepoint BI场景 先附一张自己做的结构图:

  6. apache (web服务器) ->php->mysql,xampp与wamp比较,WAMP与WNMP有什么区别

    wamp环境 1.W:windows 2.A:APACHE 3.M:mysql 4. p:php wnmp环境 1.W:windows 2.A:APACHE 3.n nginx 4. p:php WA ...

  7. linux必学

    memcache zookeeper activemq

  8. C# 矩阵乘法实现

    矩阵乘法是一种高效的算法可以把一些一维递推优化到log( n ),还可以求路径方案等,所以更是是一种应用性极强的算法.矩阵,是线性代数中的基本概念之一.一个m×n的矩阵就是m×n个数排成m行n列的一个 ...

  9. Numpy常用操作方法

    NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数据进行快速运算的标准数学函数(无需编 ...

  10. threading模块、ThreadLocal

    一.threading模块 1.线程对象的创建 1.1 Thread类直接创建 import threading import time def countNum(n): # 定义某个线程要运行的函数 ...