Displaytag 1.2导出到Excel:JAR冲突:java.lang.NoSuchMethodError:'void org.apache.poi.hssf.usermodel.HSSFCell.setCellValue'

问题描述

在我的Struts2应用程序中,我使用提供的org.displaytag.export.excel.DefaultHssfExportView实现,使用 Displaytag 1.2 导出 Excel XLSX 文件。

我得到的错误是:

Caused by: java.lang.NoSuchMethodError: 'void org.apache.poi.hssf.usermodel.HSSFCell.setCellValue(org.apache.poi.hssf.usermodel.HSSFRichTextString)'
    at org.displaytag.render.HssfTableWriter.writeHeaderFooter(HssfTableWriter.java:324)
    at org.displaytag.render.HssfTableWriter.writeTableHeader(HssfTableWriter.java:151)
    at org.displaytag.render.TableWriterTemplate.writeTable(TableWriterTemplate.java:125)
    at org.displaytag.export.excel.DefaultHssfExportView.doExport(DefaultHssfExportView.java:49)

setCellValue(HSSFRichTextString)上存在某种库冲突。详细信息是:

displaytag.properties (请注意我们正在导出Excel)

export.xml=false
export.excel=true
export.excel.class=org.displaytag.export.excel.DefaultHssfExportView
export.csv=false
export.pdf=false
export.excel.filename=ets.xls
export.decorated=false
export.banner=<div id="export_banner"><b><i>Export options:</i></b> {0}</div>
export.banner.placement=both

Java应用程序中的库列表

与Displaytag相关

displaytag-1.2.jar
displaytag-export-poi-1.2.jar
poi-3.16.jar
sfl4j-api-1.7.12.jar
sfl4j-nop-1.6.1.jar

支柱,弹簧,下端等

commons-io-2.2.jar
commons-lang-2.4.jar
commons-lang3-3.2.jar
commons-logging-1.1.3.jar
commons-logging-api-1.1.jar
log4j-1.2.9.jar
org.springframework.aop-3.0.5.RELEASE.jar (+ asm,aspects,beans,context,core,web,web.struts)
struts2-core-2.3.37.jar (+ dojo,jquery,spring-plugin,tiles-plugin)
velocity-1.6.4.jar
tiles-api-2.2.2.jar (+ core,el,jsp,ognl,servlet)

解决方法

解决此问题的方法是使用 POI 3.2(文件:poi-3.2-FINAL.jar)。我正在使用3.16,并且不得不降级。

这是关于必须使用此特定旧POI版本的另一个主题: https://stackoverflow.com/a/23538224/1005607

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...