PDFTextStripper NullPointerException

时间:2015-08-19 11:13:44

标签: java nullpointerexception

我正在尝试使用apache PDFBox(1.8.9)从Java中获取PDF文件中的一些数据。我在buildpath和classpath中添加了jar(在Eclipse-Mars中)

我在创建PDFTextStripper对象时遇到空指针异常。

import java.io.File;
import org.apache.pdfbox.util.PDFTextStripper;
import org.apache.pdfbox.pdmodel.PDDocument;

public class MainClass {

    public static void main(String[] args) {
        PDDocument pd ;

        try{

          StringBuilder sb = new StringBuilder();       

          File input = new File("C:\\Result.pdf");
          pd = PDDocument.load(input);

          PDFTextStripper s = new PDFTextStripper();

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

}

我得到的错误是:

java.lang.NullPointerException
at org.apache.pdfbox.util.TextNormalize.findICU4J(TextNormalize.java:54)
at org.apache.pdfbox.util.TextNormalize.<init>(TextNormalize.java:45)
at org.apache.pdfbox.util.PDFTextStripper.<init>(PDFTextStripper.java:229)
at MainClass.main(MainClass.java:17)

(第17行是我尝试创建PDFTextStripper对象的地方)

2 个答案:

答案 0 :(得分:0)

您缺少某些依赖关系,请确保您的类路径中存在以下三个jar: -

enter image description here

我用上述三个罐子执行了你问题中提到的代码,没有收到任何NPE。

另外请检查您的pdfbox-1.8.9.jar,确保其未损坏。
TextStripper类存在于pdfbox-1.8.9.jar中,因此我认为这个jar已损坏。
再次下载jar并尝试。

答案 1 :(得分:0)

检查TextStripper类的来源,看起来未找到类的异常返回为null。

您需要ICU4J jar作为您的依赖项。这些类在运行时加载。

来自TextStripper

 // see if we can load the icu4j classes from the classpath
        try 
        {
            this.getClass().getClassLoader().loadClass("com.ibm.icu.text.Bidi");
            this.getClass().getClassLoader().loadClass("com.ibm.icu.text.Normalizer");
            icu4j = new ICU4JImpl();
        } 
        catch (ClassNotFoundException e) 
        {
            icu4j = null;
        }