java - Apache Tika ArchiveStreamFactory.detect 错误

标签 java websphere-liberty apache-tika

我正在使用 java 和 apache tika 1.18 将一些文件转换为 TXT。 当我尝试使用 AutoDetectParser() 时,出现错误:

[ERROR ] 错误处理时出错,放弃! org.apache.commons.compress.archivers.ArchiveStreamFactory.detect(Ljava/io/InputStream;)Ljava/lang/String; [错误] 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/lang/String; 在 org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:162) 在[内部类(class)] 引起:java.lang.NoSuchMethodError: org.apache.commons.compress.archivers.ArchiveStreamFactory.detect(Ljava/io/InputStream;)Ljava/lang/String;

我在网上叮叮当当,发现这个错误与commom_compress 的错误版本有关,看来这个方法在commom_compress 1.14 之前的版本中不存在。在我的例子中,版本是 1.16.1。

构建项目后,我检查了里面的库,只有正确的版本。

我正在使用 IBM Liberty 18.0 ......现在我真的不知道解决这个问题的选择。

当我使用特定的解析器(如 PDFParser())时,一切正常!

有什么想法吗?

谢谢

最佳答案

问题来源:

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

Check my detailed answer here.

关于java - Apache Tika ArchiveStreamFactory.detect 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50412099/

相关文章:

java - 使用 GSON 生成链接而不是整个对象树的序列化

java - 使用 Spring-Kafka-2.3.0 及更高版本使用主题中的消息并以指数退避重试,直到成功为止

java - 从bluemix上的Liberty服务器调用javamail api

java - 使用 ApacheTika 检测文件扩展名会损坏文件

java - Apache Tika 从 FTP 文件流解析

java - 更改文件夹中文件的文件权限

java - Xpath - 如何获取元素的所有属性名称和值

websphere-liberty - 我可以扩展 WebSphere Liberty buildpack 吗?

ssl - Liberty Websphere 上没有共同的密码套件

pdf - 尝试索引 PDF 时出现 Elasticsearch Parse Exception 错误