java - POI 3.8 与 dbunit 2.4.9 不兼容

标签 java maven compilation apache-poi dbunit

我们在我们的应用程序中使用 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:

  1. 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
  2. 调整 pom.xml 以将 poi-dependency 设置为 3.9-FINAL 在较新的版本中被删除
  3. 运行mvn package
  4. 如果由于缺少 oracle-jar 而导致编译失败,请按照 https://stackoverflow.com/a/18042525/411846 中的步骤进行操作
  5. 如果测试在构建过程中失败,您可以尝试使用 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/

相关文章:

android - 如何使用 3rd 方库构建 android studio 项目

c - llvmgen.c 中的 xmos 内部编译器错误?

相当于 Python freezegun 或 Ruby timecop 的 Java 或 C#

java - 单个字符串

java - 如何使用 POM 在类路径中添加本地 jars 文件夹

node.js - 是否可以使用 frontend-maven-plugin 在开发模式下启动 Web 应用程序(vuejs+springboot)?

gnu - 在 HP-UX 上编译 GNU 软件。 yy* 符号问题

c++ - 如何使用C++ Boost库中的for_each?

java - 无论字符串大小如何,如何在 Java 中获取字符串中的最后一个字符

java - 父RecyclerView的子RecyclerView的项目点击事件