Не могу индексировать 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.