Java JXLS Transformer错误

时间:2016-06-24 09:12:03

标签: java jxls

我只是想从Java JXLS中证明一个演示代码:http://jxls.sourceforge.net/samples/object_collection.html 但在添加(没有MAVEN)必要的库后:

  • JXLS-2.3.0.jar
  • JXLS-POI-1.0.9.jar
  • jxls-reader-2.0.2.jar
  • poi-3.14-20160307.jar
  • POI-OOXML-3.14-20160307.jar

我收到以下错误跟踪:

ERROR [org.jxls.util.TransformerFactory] (http--0.0.0.0-8080-9) Method createTransformer of org.jxls.transform.poi.PoiTransformer class thrown an Exception: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_101]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_101]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_101]
        at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_101]
        at org.jxls.util.TransformerFactory.createTransformer(TransformerFactory.java:35) [jxls-2.3.0.jar:]

    Caused by: java.lang.NullPointerException
        at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:198) [poi-ooxml-3.14-20160307.jar:3.14]
        at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:170) [poi-ooxml-3.14-20160307.jar:3.14]
        at org.jxls.transform.poi.PoiTransformer.createTransformer(PoiTransformer.java:49) [jxls-poi-1.0.9.jar:]
        at org.jxls.transform.poi.PoiTransformer.createTransformer(PoiTransformer.java:42) [jxls-poi-1.0.9.jar:]

 ERROR [stderr]  java.lang.IllegalStateException: Cannot load XLS transformer. Please make sure a Transformer implementation is in classpath

我已经尝试了所有可能性并且总是得到同样的错误。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

问题可能是项目中存在冲突的jar。

如果您在项目中以某种方式拥有两个版本的POI(例如3,14 - 3,06),则它无法实例化类或调用方法。检查那些冲突。

(如果您使用maven,请检查依赖关系层次结构以查看所有依赖关系并排除不同版本的poi,然后重试。)

答案 1 :(得分:1)

尝试了很多并解决了问题,但添加了以下用于解决此问题的依赖JAR列表

  • 公地编解码器1.10.jar
  • 公地collections4-4.1.jar
  • 公地JEXL-2.1.1.jar
  • 共享记录-1.2.jar
  • JXLS-2.4.0.jar
  • JXLS-jexcel-1.0.6.jar
  • JXLS-POI-1.0.12.jar
  • JXLS-读取器 - 2.0.2.jar
  • POI-3.14.jar
  • POI-OOXML-3.15.jar
  • SLF4J-API-1.6.6.jar

答案 2 :(得分:0)

要使用当前的Jxls-2.3.0版本运行此示例,您需要在类路径中使用以下库

  • JXLS-2.3.0.jar
  • JXLS-POI-1.0.11.jar
  • POI-3.14.jar
  • POI-OOXML-3.14.jar
  • SLF4J-API-1.7.7.jar
  • 公地JEXL-2.1.1.jar
  • 共享记录-1.2-api.jar文件

您可以做的另一个选择是使用jxls依赖项设置一个简单的Maven项目,然后使用Maven Dependency Plugin的Copying project dependencies目标将所有依赖项下载并复制到一个单独的文件夹中。

在搜索转换器实现时,jxls-2.3.0及更早版本无法正确显示异常堆栈跟踪。 所以现在很难弄清楚你的类路径有什么问题。 这将在下一个版本中修复。