Gradle jxls 2.5使用jxls-poi-1.0.12的兼容性

Gradle jxls 2.5使用jxls-poi-1.0.12的兼容性,gradle,apache-poi,jxls,Gradle,Apache Poi,Jxls,我使用的是jxls-poi-1.0.12。 JXLS2.5发布后,gradle自动将jxls更新为2.5。因此,我在运行JxlsHelper.getInstance().processTemplate(上下文,转换器)时遇到了一个异常 我检查了JXLS2.5更新。我发现当每个命令运行时,JXLS2.5都向transformer接口添加了adjustTableSize()方法。然而,PoitTransformer并没有实现这个方法,所以我得到了这个错误。这意味着jxls 2.5与jxls-poi-

我使用的是jxls-poi-1.0.12。 JXLS2.5发布后,gradle自动将jxls更新为2.5。因此,我在运行JxlsHelper.getInstance().processTemplate(上下文,转换器)时遇到了一个异常

我检查了JXLS2.5更新。我发现当每个命令运行时,JXLS2.5都向transformer接口添加了adjustTableSize()方法。然而,PoitTransformer并没有实现这个方法,所以我得到了这个错误。这意味着jxls 2.5与jxls-poi-1.0.12不兼容

当然,我可以升级我的poi,但这需要很多时间。是否可以降级jxls或禁用以运行Transformer.adjustTableSize()

这是我的身材,格雷德尔

compile group: 'org.jxls', name: 'jxls-jexcel', version: '1.0.6'
compile group: 'org.jxls', name: 'jxls-poi', version: '1.0.12'
compile group: 'org.jxls', name:'jxls', version :'2.4.0'

为了能够将Jxls 2.5.0与Apache POI结合使用,您必须切换到
Jxls POI
1.1.0
,它实现了Transformer.adjustTableSize()

如果您不想使用最新的POI版本,可以尝试将其从jxls POI依赖项中排除,并使用较旧的POI版本。但是,如果POI版本之间发生了中断API更改,则这可能不起作用

更新日期:2019年2月16日: Jxls 2.5.1版现已发布。
此版本应与jxls poi
1.0.x
版本向后兼容,因此当版本在Maven Central中可用时,此问题应消失。

我们今天遇到了相同的问题。 经过调查,我们找到了解决办法。所以请让我分享

请尝试更改gradle.build,如下所示

compile ("org.jxls:jxls-poi:1.0.12"){
    transitive = false
  }
一旦更改,gradle将忽略jxls poi指定的依赖项

请详细查看该文件。(本文档适用于gradle 4.10,但我们测试了gradle 3.x)


这是因为jxls poi的版本设置。以下是POI依赖版本需求规范的规范

  • 1.0:1.0上的“软”要求(如果它与依赖项的所有其他范围相匹配,则只是一个建议)
  • [1.0]:1.0上的“硬”要求

  • 上面所说的是有道理的,但并不完全正确

    compile("org.jxls:jxls-poi:1.0.15"){
            transitive = false
        }
    compile("org.jxls:jxls:2.4.0")
    
    

    是的,我想使用
    jxls poi
    1.0.12
    ,但gradle自动将我的
    jslx
    更新为
    2.5.0
    。这很有效!!但我昨天也试过了。我想可能是系统缓存。但无论如何,谢谢你让我再次尝试成功。非常感谢!!我很高兴听到这个消息:)
    # this is the part of result of gradle dependencies command.
    ...
    +--- org.jxls:jxls-poi:1.0.12
    |    |    +--- org.jxls:jxls:[2.4.0,) -> 2.5.0 (*)
    ...
    
    |    +--- org.jxls:jxls:2.4.0 -> 2.5.0 (*)
    
    |    +--- org.jxls:jxls:2.4.0 (*)
    
    compile("org.jxls:jxls-poi:1.0.15"){
            transitive = false
        }
    compile("org.jxls:jxls:2.4.0")