当前位置: 首页 > 知识库问答 >
问题:

Java跳过catch子句直接跳到apache pdfbox中的最终

养慈
2023-03-14

我的手在头发上。

我正在使用Apache PDFBox,因为我想在JAVA中逐行读取pdf文件并稍后处理内容。但是我有以下问题...我在单独的java程序(在main方法中)中使用了下面的代码,它在那里工作正常。但是,当我将其与石英调度程序结合在我的tomcat服务器小程序中使用时,会出现问题,我无法找出原因。请记住,我将下面的行从工作的单独测试程序复制粘贴到我自己的更大项目中,因此它是完全相同的代码。然而,在我更大的项目中,tHe程序一直运行到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,是的,我也尝试过)。

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

共有1个答案

慕仲渊
2023-03-14

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

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

catch (Error err){
    err.printStackTrace();
    throw (err);
}
 类似资料:
  • 当我从Oracle Java教程中读到这篇文章时,我正在查看一个经常重复的谣言,即JVM上的守护进程线程以某种特殊的方式处理块(它们不会,好吗?): 注意:如果在执行或代码时JVM退出,那么块可能不会执行。同样,如果执行或代码的线程被中断或终止,则块可能不会执行,即使应用程序作为一个整体继续。 (重点是我的。)被打断的那一点引起了我的注意! 我认为,如果一个线程处于try/catch代码中并被中断

  • 这让我很费解。我正在试图理解如何解决Java无法识别我的“settitle”方法存在于第一个“song”之后的问题。这是一个音乐应用程序。它还有另外两个类。我们将非常感谢所有的帮助。 编辑:添加歌曲类。

  • 我使用OpenNLP Java API进行句子标记化,它使用空格字符来标记句子,并拆分每个单词。 有没有什么方法可以让我跳过一些特定单词的分词或标记化。 例如在句子中。“一只敏捷的棕色狐狸跳过懒狗”。OpenNLP将句子拆分/标记为 一只 快速 棕色 狐狸 跳过 懒惰的 狗 我想跳过单词“Quick brown Fox”和“Lazy Dog”的标记化,因此预期的输出将是 一只 快速的棕色狐狸 跳过

  • 问题声明:给定数组:[1,0,1,0,1,1,1,1,1,0,1,1,1,0]输出:到达结束所需的最小步骤 条件: 0上的步骤是退出 我已经完成了不使用DP的情况下的使用,是否存在针对此问题的DP解决方案。 我的代码:

  • 问题内容: 我正在尝试编写一个具有File对象,offset和字节数组参数的函数,并将该字节数组写入Java中的File对象。 所以功能看起来像 但是问题是offset参数是long类型,所以我不能使用OutputStream的write()函数,该函数将整数作为偏移量。 与InputStream的skip(long)不同,似乎OutputStream无法跳过文件的前几个字节。 有解决这个问题的好

  • 我有一个文件包:“100.txt”、“1000.txt”、“10000.txt”、“100000.txt”、“1000000.txt”。但当我启动程序时,它会跳过100和1000个txt文件。你能告诉我为什么吗?