Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java POI 3.8与dbunit 2.4.9不兼容_Java_Maven_Compilation_Apache Poi_Dbunit - Fatal编程技术网

Java POI 3.8与dbunit 2.4.9不兼容

Java POI 3.8与dbunit 2.4.9不兼容,java,maven,compilation,apache-poi,dbunit,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版本。有没有办法

我们在应用程序中使用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重新编译它的内容。如何进行重新编译?

在的dbunit bugtracker上对此进行了一些讨论,不幸的是,那里还没有更新,因此dbunit本身似乎还不支持此功能

通过以下步骤,我能够针对较新的Apache POI版本重新编译dbunit:

  • 通过via查看dbunit代码
    svn公司http://dbunit.svn.sourceforge.net/svnroot/dbunit/tags/dbunit-2.4.9
  • 调整pom.xml以将poi依赖项设置为仅
    3.9
    ,更新版本中删除了
    -FINAL
  • 运行
    mvn包
  • 如果在编译过程中由于缺少oracle jar而失败,请按照
  • 如果在构建过程中测试失败,您可以尝试使用
    mvn-DskipTests=true包跳过它们

  • 生成的二进制文件位于
    target/dbunit-2.4.9.jar下

    我在这里检查了pom文件

    ApachePOI的版本仍然是3.2。不幸的是,这个版本已经有5年的历史了,并且它的功能少于3.9,例如格式化程序和一些类(如Row)的不同包

    根据centic的建议,我已经克隆了git repo,现在dbunit的版本是2.4.10-SNAPSHOT,我已经更改了apache poi版本,并使用-Dmaven.test.skip=true选项编译和安装

    默认情况下,oracle的配置文件被激活,这必须具有oracle jdbc驱动程序,可以按照上述建议在本地repo中禁用或安装该驱动程序


    所有的测试都像以前一样顺利。

    他们网站上的[DBUnit building guide]()没有涵盖它吗?似乎到源代码的链接不再起作用了。新的是或通过SVN:
    git克隆http://git.code.sf.net/p/dbunit/code.git