2016-09-21 2 views
0

pdf 파일의 내용 색인을 위해 PDFBox 및 tika를 사용하고 있습니다. 모든 것은 PDFFBox 1.8으로 잘 작동하지만 2.0.2에 PDFBox를 업데이트 할 때 다음 오류 아래 저를주고이 문제를 해결하기 위해PDFBox를 1.8에서 2.0.2로 업데이트 한 후에 PDF 파일을 인덱싱 할 수 없습니다.

(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 

당신이 좀 도와 주시겠습니까? 여기

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을 suports :

나는 this.

의 내 Gradle을 의존성은 2.0.2 때문에 PDFBox를 업데이트했습니다. 당신은 당신 티카 버전 1.5을 사용하고이 거기 PDFBox 버전 2.x, 그리고 PDFBox 2.0 전에 티카 1.5 긴 2014 년 2 월 출시 된 점을 고려 매우 받아들이 기 어려운 것입니다

Tika 1.5 supports pdfbox 2.0.3

을 주장 here

+0

어떻게 업그레이드 했습니까? 내 최고의 추측은 당신이 그것을 올바르게하지 않은 것입니다. – Gagravarr

+0

나는 gradle을 사용하고 있으므로 버전을 변경하십시오 : "org.apache.pdfbox : pdfbox : 2.0.2"를 컴파일하십시오. 그리고 명령을 실행 gradle 깨끗한 빌드. 내 POI는 다음과 같이 보입니다 : org.apache.poi : poi : 3.8 " \t"org.apache.poi : poi-ooxml : 3.8 " \t compile"org.apache.poi : poi-scratchpad : 3.8 "참고 : 빌드가 성공적으로 생성됩니다. –

+0

Stacktrace에는 PDFBox에 대한 언급이 없지만 Tika 클래스 만 예외로 간주됩니다. 따라서 Tika 버전이 PDFBox 2.0.2와 호환되는지 확인 했습니까? Tika 설명서를 올바르게 읽으면 PDFBox 2를 지원합니다.x는 1.13 이전 버전에는 없었습니다. – mkl

답변

3

를 볼 수 있습니다 .0 여러 방법으로 .0 이전 1.8.x 릴리스와 호환되지 않습니다.

귀하는 귀하의 주장을 뒷받침하기 위해 mvnrepository page for Apache Tika Parsers » 1.5을 가리키고 있습니다.

Screenshot

을하지만이 모든 의미는 티카 1.5 PDFBox 1.8.4에 의존성을 가지고 지금은 PDFBox 버전 2.0.3이 존재한다는 것입니다 :이 페이지는 보여줍니다. 이 아닌 경우은 Tika 1.5가 PDFBox 2.0.3에서 제대로 작동 함을 의미합니다. 당신이 볼거야 치어 파일을 보면

:

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

따라서, 티카 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에 따르면 Tika는 버전 1.13부터 PDFBox 2.0.1을 실행할 수 있습니다.


따라서 긴 이야기를하기 위해 Tape를 PDFBox 2.0.x와 함께 사용하려면 최소한 1.13 버전이 필요합니다.

+0

답변 해 주셔서 감사합니다. 내 tika 항아리를 업데이트하십시오. –

+0

최신 티나에는 다른 업데이트가 필요할 수도 있습니다. 버전 업데이트는 상당히 지옥 일 수 있습니다. – mkl

관련 문제