我们在我们的应用程序中使用 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 重新编译它的信息。如何进行重新编译?
最佳答案
在 http://sourceforge.net/p/dbunit/bugs/332/ 的 dbunit-bugtracker 上有一些关于这个的讨论,不幸的是那里还没有更新,所以似乎 dbunit 本身还不支持这个。
我能够通过以下步骤针对较新的 Apache POI 版本重新编译 dbunit:
- 从 http://dbunit.svn.sourceforge.net/svnroot/dbunit/tags/dbunit-2.4.9 查看 dbunit 代码通过
svn co http://dbunit.svn.sourceforge.net/svnroot/dbunit/tags/dbunit-2.4.9
- 调整 pom.xml 以将 poi-dependency 设置为
3.9
,-FINAL
在较新的版本中被删除 - 运行
mvn package
- 如果由于缺少 oracle-jar 而导致编译失败,请按照 https://stackoverflow.com/a/18042525/411846 中的步骤进行操作
- 如果测试在构建过程中失败,您可以尝试使用
mvn -DskipTests=true package
跳过它们
生成的二进制文件位于 target/dbunit-2.4.9.jar
下
关于java - POI 3.8 与 dbunit 2.4.9 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18271937/