Apache Tika ArchiveStreamFactory.detect错误

问题描述 投票:2回答:1

我正在使用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(),一切正常!

有任何想法吗?

谢谢

java websphere-liberty apache-tika
1个回答
0
投票

Source of the issue:

Spark 2.x发行版包括旧版本的commons-compress,而Tika库依赖于commons-compress库的1.18版本。

Solution

在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}
....

Check my detailed answer here.

© www.soinside.com 2019 - 2024. All rights reserved.