0

我正在使用 PDFBox 和 tika 对 pdf 文件进行内容索引。PDFFBox 1.8 一切正常,但是当 PDFBox 更新到 2.0.2 时,它给了我以下错误:

(Thread-62 (HornetQ-client-global-threads-2071379348)) Exception while creating solr doucment for content::Failed to close temporary resources: org.apache.tika.exception.TikaException: Failed to close temporary resources
at org.apache.tika.io.TemporaryResources.dispose(TemporaryResources.java:152)
at org.apache.tika.parser.pdf.PDFParser.parse(PDFParser.java:149)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:242)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:242)
at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:120)

at org.hornetq.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:91)
at org.hornetq.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:983)
at org.hornetq.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:48)
at org.hornetq.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1113)
at org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:100)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Could not delete temporary file C:\Users\FILESE~1\AppData\Local\Temp\apache-tika-7918716906396425097.tmp
at org.apache.tika.io.TemporaryResources$1.close(TemporaryResources.java:70)
at org.apache.tika.io.TemporaryResources.close(TemporaryResources.java:121)
at org.apache.tika.io.TemporaryResources.dispose(TemporaryResources.java:150)
... 18 more

你能帮我解决这个问题吗?

因此,我将 PDFBox 更新为 2.0.2

我的gradle依赖是:

compile "org.apache.poi:poi:3.8"
compile "org.apache.poi:poi-ooxml:3.8"
compile "org.apache.poi:poi-scratchpad:3.8"
compile "org.apache.pdfbox:pdfbox:2.0.2"

compile 'org.apache.tika:tika-parsers:1.5'
compile 'org.apache.tika:tika-core:1.5'

这里我使用的是 tika 1.5,这个版本支持 pdfbox 2.0.3。你可以在这里看到

4

1 回答 1

3

您使用 Tika 1.5 版并声称

Tika 1.5 支持 pdfbox 2.0.3

考虑到 Tika 1.5 早在 PDFBox 2.x 版本出现之前就已于 2014 年 2 月发布,而且 PDFBox 2.0.0 在许多方面与其早期的 1.8.x 版本不兼容,这是极其难以置信的。

您指向Apache Tika Parsers » 1.5 的 mvnrepository 页面来支持您的主张。此页面显示:

截屏

但这一切意味着 Tika 1.5 依赖于 PDFBox 1.8.4,并且现在存在一个 PDFBox 版本 2.0.3。这并不意味着Tika 1.5 与 PDFBox 2.0.3 一起正常运行。

查看 pom 文件,您将看到:

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>1.8.4</version>
</dependency>

因此,Tika 1.5 已使用 PDFBox 1.8.4 开发和编译。如果 PDFBox 版本编号合理,您可以希望 Tika 1.5 从 x == 4 开始与任何 PDFBox 1.8.x 一起正常工作。

但 PDFBox 开发人员借此机会在其 2.0.0 版本中彻底改革了 PDFBox 架构。因此,最有可能的是,没有任何依赖于 1.x PDFBox 版本的程序可以在没有更改的情况下与 PDFBox 2.x 一起运行。

根据 TIKA 问题TIKA-1959,自 1.13 版起,Tika 可以与 PDFBox 2.0.1 一起运行。


因此,长话短说,如果您想将 Tika 与 PDFBox 2.0.x 一起使用,您至少需要 1.13 版本。

于 2016-09-21T10:31:33.760 回答