我正在使用java with apache tika 1.18将一些文件转换为TXT。当我尝试使用AutoDetectParser()时,我收到错误:
[错误]错误处理期间发生错误,放弃! org.apache.commons.compress.archivers.ArchiveStreamFactory.detect(Ljava / IO /的InputStream)Ljava /郎/字符串; [错误] SRVE0777E:应用程序类'org.apache.cxf.service.invoker.AbstractInvoker.createFault:162'org.apache.cxf.interceptor.Fault抛出异常:org.apache.commons.compress.archivers.ArchiveStreamFactory.detect (Ljava / IO /的InputStream)Ljava /郎/字符串; at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:162)at [internal classes]引起:java.lang.NoSuchMethodError:org.apache.commons.compress.archivers.ArchiveStreamFactory.detect(Ljava) / IO /的InputStream)Ljava /郎/字符串;
我正在互联网上发现这个错误与commom_compress的错误版本有关,看来这个方法在commom_compress的1.14之前的版本中不存在。在我的情况下,版本是1.16.1。
在构建项目之后,我检查了里面的库,只有正确的版本。
我正在使用IBM Liberty 18.0 ......现在我真的迷失了解决这个问题的方法。
当我使用特定的解析器,如PDFParser(),一切正常!
有任何想法吗?
谢谢
Spark 2.x
发行版包括旧版本的commons-compress,而Tika
库依赖于commons-compress
库的1.18版本。
在spark-shell或spark-submit中使用--driver-class-path参数指向正确版本的commons-compress库。
spark-submit
--driver-class-path ~/.m2/repository/org/apache/commons/commons-compress/1.18/commons-compress-1.18.jar
--class {you.main.class}
....