对于不同应用中的相同代码,tika默认检测器有所不同

时间:2019-11-14 18:15:22

标签: java apache-tika

我正在处理的项目有一个使用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的区别?

1 个答案:

答案 0 :(得分:0)

我找到了问题的答案。

原谅我如果我弄错了一些Apache Storm术语,我是Storm的新手。

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

Storm拓扑JAR仅包含对tika-core的依赖,tika解析器被无意中遗弃了。

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