我们在申请中使用POI 3.8。我们的项目使用dbunit从.xls文件加载数据集,显然dbunit与POI 3.8不兼容。我得到以下异常,
java.lang.NoSuchMethodError: org.apache.poi.hssf.usermodel.HSSFDateUtil.isCellDateFormatted(Lorg/apache/poi/hssf/usermodel/HSSFCell;)Z
似乎dbunit需要POI 3.2。但是我无法降级我的POI版本。有没有办法解决这个问题。在一篇文章中,我读到了关于下载dbunit源代码并针对poi 3.8重新编译它的内容。如何重新编译呢?
答案 0 :(得分:2)
在http://sourceforge.net/p/dbunit/bugs/332/的dbunit-bugtracker上对此进行了一些讨论,遗憾的是还没有更新,所以似乎dbunit本身还不支持这个。
我能够通过以下步骤针对较新的Apache POI版本重新编译dbunit:
svn co http://dbunit.svn.sourceforge.net/svnroot/dbunit/tags/dbunit-2.4.9
3.9
,-FINAL
在较新版本中被删除mvn package
mvn -DskipTests=true package
生成的二进制文件位于target/dbunit-2.4.9.jar
答案 1 :(得分:1)
我在这里检查了pom文件 http://sourceforge.net/p/dbunit/code.git/ci/master/tree/dbunit/
它仍然是apache poi的版本是3.2。不幸的是,这个版本已经有5年的历史,其功能要比3.9少,例如,Formatter和一些类的不同包,如Row。
正如centic所建议我克隆了git repo,现在dbunit的版本是2.4.10-SNAPSHOT,我已经更改了apache poi版本,使用选项-Dmaven.test.skip = true编译和安装。< / p>
默认情况下,oracle的配置文件被激活,这必须有oracle jdbc驱动程序,可以在本地仓库中禁用或安装,如上所述。
所有测试都像以前一样顺利进行。