8

我双手插在头发上。

我正在使用 Apache PDFBox,因为我想在 JAVA 中逐行读取 pdf 文件并稍后处理内容。但是我有以下问题.. 我在一个单独的 java 程序中使用了下面的代码(在 main 方法中),它在那里工作正常。但是,当我在我的 tomcat 服务器小程序中将它与石英调度程序结合使用时,出现了问题,我不知道为什么。请记住,我将下面的行从工作的单独测试程序复制+粘贴到我自己更大的项目中,所以它是完全相同的代码。然而,在我更大的项目中,程序一直运行到我放置断点的 String x1 = .. 行。当我尝试跳过它时,它不会给出任何错误、控制台输出或任何东西,而是直接跳过 catch 子句。我在 catch 子句中放了断点,它们

这是我的代码:

    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();
    }

我得到的唯一输出来自 LOG4J,它必须为程序的其他部分初始化,最后几行输出是

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}

现在让我烦恼的是我如何才能弄清楚那个电话出了什么问题?就像我说的,如果我将代码放在单独的 java 程序中,它运行良好.. 但我无法获得任何错误输出或捕获任何异常(我正在尝试捕获异常,即使它应该给出 IOException 并且是的我也试过了)。

我希望你们中的任何人都知道该怎么做。亲切的问候

4

1 回答 1

7

看起来有人已经回答了这个问题,但是为错误添加一个 catch 可以解决我遇到的类似问题。

我在异常的“catch”之后添加了这个“catch”(用于错误):

catch (Error err){
    err.printStackTrace();
    throw (err);
}
于 2015-02-26T20:03:09.063 回答