繁体   English   中英

PDFTextStripper NullPointerException

[英]PDFTextStripper 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对象的位置)

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

在此处输入图片说明

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

还请检查您的pdfbox-1.8.9.jar,确保其未损坏。
pdfbox-1.8.9.jar中存在TextStripper类,因此在我看来,这个jar已损坏。
再次下载jar,然后尝试。

检查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;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM