2013-02-23 2 views
1

나는 나의 머리카락을 손에 들고있다.java skicks catch 절이 마침내 아파치에서 마침내 뛰어 오른다. pdfbox

Apache PDFBox를 사용하고 있습니다. 왜냐하면 JAVA에서 한 줄씩 PDF 파일을 읽고 나중에 내용을 다루기를 원하기 때문입니다. 그러나 다음과 같은 문제가 있습니다. (main 메서드에서) 별도의 Java 프로그램에서 아래 코드를 사용하고 잘 작동합니다. 그러나 쿼츠 스케쥴러와 결합하여 내 tomcat 서버 애플릿에서 사용할 때 문제가 발생하여 그 이유를 알 수 없습니다. 아래의 줄을 작업 별 테스트 프로그램에서 내 자신의 큰 프로젝트로 복사하여 똑같은 코드로 복사한다는 것을 명심하십시오. 그러나 더 큰 프로젝트에서 프로그램은 문자열 x1 = ..까지 중단 점을 넣을 때까지 실행됩니다. 내가 그걸 넘어서려고 할 때 어떤 오류나 콘솔 출력이나 뭐든지주고 catch 절을 넘어서서 마침내 마침내. catch 절에 중단 점을 넣었고 트리거되지 않았습니다.

내 코드입니다 : 프로그램의 다른 부분과 출력의 마지막 몇 줄 초기화해야했다 내가 얻을 수있는 유일한 출력은 LOG4J에서입니다
PDFTextStripper stripper; 
    PDDocument doc = null;  
    try{ 
     doc = PDDocument.load("00026614_F_21Jan2013-18Feb2013.pdf"); 
     stripper = new PDFTextStripper(); 
     String x1= stripper.getText(doc); //SOMETHING GOES WRONG HERE 
     //break up the file content returned as a string into individual lines 
     List<String> ans= Arrays.asList(x1.split("\r\n"));//THIS IS NEVER REACHED 
    } 
    catch(Exception e){ 
     e.printStackTrace(); //THIS IS NEVER REACHED EITHER 
    } 
    finally{ 
     if(doc!=null) //IT GOES FROM STRING X1 STRAIGHT TO HERE. 
     doc.close(); 
    } 

34212 [DefaultQuartzScheduler_Worker-1] DEBUG org.apache.pdfbox.util.PDFStreamEngine - processing substream token: PDFOperator{Tm} 
34212 [DefaultQuartzScheduler_Worker-1] DEBUG org.apache.pdfbox.util.PDFStreamEngine - processing substream token: COSName{ttf0} 
34212 [DefaultQuartzScheduler_Worker-1] DEBUG org.apache.pdfbox.util.PDFStreamEngine - processing substream token: COSInt{10} 
34212 [DefaultQuartzScheduler_Worker-1] DEBUG org.apache.pdfbox.util.PDFStreamEngine - processing substream token: PDFOperator{Tf} 

이제는 버그가 있다는 것이 어떻게 그 전화에서 잘못 됐는지 알아낼 수 있습니까? 내가 말한 것처럼 그것은 잘 실행되는 별도의 자바 프로그램에 코드를 넣으면 ..하지만 나는 어떤 에러 출력도 얻지 못하거나 어떤 예외도 잡을 수 없다. (예외를 잡으려고 노력 중이다. 종류 누군가가 이미 대답처럼

+0

나는 자바가 깨지지 않았 음을 보증 할 수 있으며 "마침내 곧장 뛰어 오르지"않는다. catch 절이 호출되지 않으면 예외가 발생하지 않습니다. –

+0

디버깅만을 위해서'Exception' 대신'Throwable'을 잡아서 아무 것도 얻지 못하게 할 수 있습니다. 여기에 '오류'는 '예외'가 아니지만 여전히 throw 가능합니다. – Charlie

+4

아마도 '예외'가 아니라 '오류'가 발생했을 것입니다. 'catch' 블록을'catch (Exception e) {'에서'catch (Error e) {'로 변경해 볼 수 있습니다. 아마도 'NoClassDefFoundError' 또는'NoSuchMethodError' 오류입니다 –

답변

1

이 보이는 간주한다..) 그뿐만 아니라 내가 너희 중에 누구든지이와 어떻게 해야할지 희망

을하려고했으나 오류에 대한 캐치를 추가 비슷한 위해 속임수를 썼는지했습니다 ' 문제는 내가 가지고 있었다

나는이 '캐치'를 추가 (에러) 예외에 대한 '캐치'후 :.

catch (Error err){ 
    err.printStackTrace(); 
    throw (err); 
} 
,
관련 문제