我正在尝试使用apache PDFBox(1.8.9)从Java的PDF文件中获取一些数据。我已经将jar添加到我的buildpath和类路径中(在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对象的位置)
发布于 2015-08-19 19:30:27
您缺少一些依赖项,请确保您的类路径中存在以下三个jars:-

我用上面的三个jars执行了你问题中提到的代码,没有收到任何NPE。
也请检查您的pdfbox-1.8.9.jar,确保它没有损坏。
TextStripper类出现在pdfbox-1.8.9.jar中,所以在我看来这个jar已经损坏了。
再次下载jar并尝试。
发布于 2015-08-19 19:31:10
检查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;
}https://stackoverflow.com/questions/32093905
复制相似问题