【问题标题】:tika default detectors are different for the same code in different appstika 默认检测器对于不同应用程序中的相同代码是不同的
【发布时间】:2019-11-22 22:21:33
【问题描述】:

我正在处理的项目有一个使用 Tika 的 WebUI (WAR) 和另一个也使用 Tika 的应用程序 (JAR)。 两者都有相同的代码:

Tika t = new Tika();
String detectedType = t.detect(fileName);

然而,每一个都返回不同的结果。

我使用了https://cwiki.apache.org/confluence/display/tika/Troubleshooting%20Tika#TroubleshootingTika-TroubleshootingApacheTika 的 Tika 故障排除技巧

在我看到的 WebUI 中

Tika version: Apache Tika 1.22
Tika detector type org.apache.tika.detect.OverrideDetector
Tika detector type org.apache.tika.parser.microsoft.POIFSContainerDetector
Tika detector type org.apache.tika.parser.pkg.ZipContainerDetector
Tika detector type org.gagravarr.tika.OggDetector
Tika detector type org.apache.tika.mime.MimeTypes

在我看到的应用程序中

Tika version: Apache Tika 1.22
Tika detector type org.apache.tika.mime.MimeTypes

我是 Java WAR 和 JAR 的新手,但该项目似乎具有正确的依赖关系, 但我不明白为什么这两个会得到不同的默认检测器列表。

我应该在哪里寻找这两者在使用 Tika 的方式之间的区别?

【问题讨论】:

  • Apache Tika 由几个 jars 和一大堆依赖项组成,确保它们都包含在这两个地方!
  • 这些依赖项是否记录在某处?我跑了mvn dependency:copy-dependencies,但复制了 150 多个 JAR。我应该包括所有这些吗?构建 WAR 并不直接包含其中的大多数,因此可能间接包含了一些。
  • 如果你想使用所有的Apache Tika,你需要所有的依赖,是的!

标签: java apache-tika


【解决方案1】:

我找到了问题的答案。

如果我对 Apache Storm 的某些术语有误解,请原谅我,我是 Storm 的新手。

部分问题是我遗漏了一个关键细节,有问题的 JAR 是作为 Storm 工作者的一部分动态加载的。

Storm 拓扑 JAR 仅包含对 tika-core 的依赖,tika-parsers 被无意中遗漏了。

为了解决这个问题,我从拓扑 JAR 中删除了对 Tika 的所有依赖项(它们是不必要的)。现在,当相关 JAR 被加载时,依赖于 tika-core 和 tika-parsers 一切都按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多