使用Apache Tika的PDFParser解析PDF文件时出现以下错误消息
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.apache.tika.parser.pdf.PDFParser.parse(PDFParser.java:150)
at tikapdf.TikaPdfParser.main(TikaPdfParser.java:29)
Caused by: java.lang.NullPointerException
at org.apache.pdfbox.text.PDFTextStripper.<clinit>(PDFTextStripper.java:1852)
... 2 more
我在之前收到错误,在 之后收到错误。 Tika 1.14应该与PDFBox捆绑在一起。在Eclipse IDE屏幕下方,显示所有信息和Java代码。
package tikapdf;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.IOException;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.pdf.PDFParser;
import org.apache.tika.sax.*;
import org.xml.sax.SAXException;
public class TikaPdfParser {
public static void main(final String[] args) throws IOException, SAXException, TikaException {
try {
InputStream input = new FileInputStream(new File("D:\\Users\\bguarism\\workspace\\NLP\\invoice89526610.pdf"));
BodyContentHandler textHandler = new BodyContentHandler(-1); //-1 to allow parsing for unlimited character
Metadata metadata = new Metadata();
ParseContext context = new ParseContext();
//parsing the document using PDF parser
PDFParser parser = new PDFParser();
parser.parse(input, textHandler, metadata, context);
System.out.println("Title: "+ metadata.get(Metadata.TITLE));
//System.out.println("Body: "+ textHandler.toString());
input.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
我知道这个问题比较老,但我今天和Eclipse Neon一起遇到了同样的问题。
所以这里可以解释你的问题。
可能的简单解决方案:删除标记&#34;系统库&#34;从Eclipse库定义和getClassLoader将返回一个实例到类加载器。因此,您不再会遇到异常。
更难分辨率:修补PDFBox的代码库并检查空值。如果适用,使用ClassLoader.getSystemClassLoader()instaead。用Maven重新编译。