POI 3.8升級至4.1.2;報NoSuchFieldError:LFH_SIG

1.下載jar包

下載地址:https://poi.apache.org/download.html#POI-4.1.2
在這裏插入圖片描述
在這裏插入圖片描述

2.放入項目中,刪除老的jar包

在這裏插入圖片描述

3.解決報錯

替換上圖6個jar包完會報兩種錯,一種代碼直接報錯,一種調用原來功能報錯

  • 代碼直接報錯解決方法(部分)
報錯 替換 註釋
HSSFCellStyle.ALIGN_CENTER HorizontalAlignment.CENTER 居中
Cell.CELL_TYPE_NUMERIC CellType.NUMERIC 類型對應的值:0
Cell.CELL_TYPE_STRING CellType.STRING 類型對應的值:1
Cell.CELL_TYPE_FORMULA CellType.FORMULA 類型對應的值:2
Cell.CELL_TYPE_BLANK CellType.BLANK 類型對應的值:3
Cell.CELL_TYPE_BOOLEAN CellType.BOOLEAN 類型對應的值:4
Cell.CELL_TYPE_ERROR CellType.ERROR 類型對應的值:5
  • 調用原來功能報錯
    因爲老的poi3.8還需要多個apache-comons-xxx.jar的jar包支持,所以要替換apache-commons的jar包來與目標版本4.1.2相對應,可以在https://mvnrepository.com/查找對應的jar包
    這步驟比較麻煩,但基本可以憑報錯信息中,根據類的包名找到需要下載的jar包,如:
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述其他commons-xxx.jar包替換類似
    在這裏插入圖片描述

4.奇葩報錯:NoSuchFieldError:LFH_SIG

  • 有些不知道原來的jar包是哪個,雖然下載對應的版本了,但是沒刪除原來的jar包,也會報錯,比如:
    在這裏插入圖片描述
    可能你已經下載了commons-compress正確的jar包,但是還報錯,這個時候,怎麼找原來老版本的commons-compress的jar包顯得至關重要;
    怎麼辦呢?
    (1)往下看找到最近的報錯地方ZipArchivlInputStream
    (2)利用eclipse的CTRL+T功能
    此功能是搜索類,不同於CTRL+R只能搜索項目中的我們自己寫的類,CTRL+T還能搜索jar包中的類,選中類,會提示來自哪個jar包
    在這裏插入圖片描述
    在輸入org.apache.commons.compress.archiver時,查看提示的類中有一個ArchiverFactory類,此類對應的jar包不是commons-compress-1.20.jar;而是apache-jakarta-commons-compress.jar;嘗試刪除apache-jakarta-commons-compress.jar,刪除後問題解決
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章