我使用java和apache tika 1.18将一些文件转换成TXT。当我尝试使用AutoDetectParser()时,我得到了错误:
错误处理过程中出现错误,放弃!org.apache.commons.compress.archivers.ArchiveStreamFactory.detect(Ljava/io/InputStream;)Ljava/lang/String;错误异常:应用程序类'org.apache.cxf.service.invoker.AbstractInvoker.createFault:162‘org.apache.commons.compress.archivers.ArchiveStreamFactory.detect(Ljava/io/InputStream;)Ljava/lang/String;引发异常SRVE0777E: org.apache.cxf.interceptor.Fault由: org.apache.commons.compress.archivers.ArchiveStreamFactory.detect(Ljava/io/InputStream;)Ljava/lang/String;:java.lang.NoSuchMethodError引起的内部类的at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:162)
我在互联网上发现这个错误与错误的commom_compress版本有关,似乎这个方法在之前的1.14版本的commom_compress中不存在。在我的例子中,版本是1.16.1。
在构建项目之后,我检查了里面的库,只有正确的版本。
我使用的是IBM Liberty 18.0 ...现在我真的迷失了解决这个问题的选择。
当我使用特定的解析器时,比如PDFParser(),一切都很好!
有什么想法吗?
谢谢
发布于 2019-04-20 18:53:11
问题的来源:
Spark 2.x发行版包括旧版本的commons-compress,而Tika库依赖于1.18版的commons-compress库。
解决方案
在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}
....https://stackoverflow.com/questions/50412099
复制相似问题