java - Apache Tika ArchiveStreamFactory.detect 错误
问题描述
我正在使用 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; 在 [internal classes] 的 org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:162) 引起: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
library 依赖于commons-compress
library 的 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}
....
推荐阅读
- android - 在另一个片段中维护数据 ViewPager 片段
- docker - 如何仅从没有会话的 keras .h5 文件中获取 Tensorflow 会话
- apache-kafka - 单个 zookeeper 集合上的多个 kafka 集群
- django - Bootstrap 4 多字段等效项
- c# - 获取 InMemoryDb 数据时,测试环境中的 DataService 始终返回 null
- ios - Apple Watch 应用程序是否可能需要指南针?(仅限 Apple Watch Series 5 的应用程序)
- javascript - 如何在 div 中显示浏览器的光标图像?
- google-cloud-firestore - 如何将 Google Cloud Storage Firebase 导出加载到 BigQuery?
- python - 如何使列表推导更具可读性?
- javascript - 检索 json 文件数据的基本 XMLhttprequest