Не могу индексировать pdf файл после того, как я обновил PDFBox с 1.8 до 2.0.2

Я использую PDFBox и тика для индексации содержимого файла 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'

Здесь я использую тика 1.5, и эта версия поддерживает pdfbox 2.0.3. вы можете увидеть здесь

1 ответ

Решение

Вы используете Tika версии 1.5 и требуете

Тика 1.5 поддерживает pdfbox 2.0.3

Это крайне неправдоподобно, учитывая, что Tika 1.5 была выпущена в феврале 2014 года задолго до того, как появилась версия PDFBox 2.x, а PDFBox 2.0.0 во многих отношениях несовместим с более ранними версиями 1.8.x.

Вы указываете на страницу mvnrepository для Apache Tika Parsers "1.5, чтобы поддержать вашу заявку. Эта страница показывает:

Скриншот

Но все это означает, что 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 будет корректно работать с любым PDFBox 1.8.x с x == 4 года.

Но разработка PDFBox воспользовалась возможностью пересмотреть архитектуру PDFBox в своем выпуске 2.0.0. Поэтому, скорее всего, ни одна программа в зависимости от версии 1.x PDFBox не сможет работать с PDFBox 2.x без изменений.

Согласно выпуску TIKA TIKA-1959, Tika может работать с PDFBox 2.0.1 начиная с версии 1.13.


Короче говоря, вам нужна как минимум версия 1.13, если вы хотите использовать Tika с PDFBox 2.0.x.

Другие вопросы по тегам