问题描述
我正在尝试从Eclipse中的Java应用程序读取具有PDFBox lib的PDF文件。这是一个简单的PDF文本,但是我遇到了java.lang.NoClassDefFoundError这个异常:org / apache / fontBox / FontBoxFont。
package pdfreader;
import java.io.*;
import org.apache.pdfBox.pdmodel.*;
import org.apache.pdfBox.text.*;
public class PdfReader {
private static void readPDF(String srcPDF) {
try {
PDDocument document = PDDocument.load(new File(srcPDF));
if (!document.isEncrypted()) {
PDFTextStripper stripper = new PDFTextStripper();
String text;
text = stripper.getText(document);
System.out.println("Text:" + text);
}
document.close();
} catch (IOException e) {
// Todo Auto-generated catch block
e.printstacktrace();
}
}
public static void main(String[] args) {
String srcPDF = "Test.pdf";
readPDF(srcPDF);
}
}
跟踪为:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/fontBox/FontBoxFont
at org.apache.pdfBox@2.0.21/org.apache.pdfBox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:89)
at org.apache.pdfBox@2.0.21/org.apache.pdfBox.pdmodel.PDResources.getFont(PDResources.java:146)
at org.apache.pdfBox@2.0.21/org.apache.pdfBox.contentstream.operator.text.SetFontAndSize.process(SetFontAndSize.java:66)
at org.apache.pdfBox@2.0.21/org.apache.pdfBox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:933)
at org.apache.pdfBox@2.0.21/org.apache.pdfBox.contentstream.PDFStreamEngine.processstreamOperators(PDFStreamEngine.java:515)
at org.apache.pdfBox@2.0.21/org.apache.pdfBox.contentstream.PDFStreamEngine.processstream(PDFStreamEngine.java:489)
at org.apache.pdfBox@2.0.21/org.apache.pdfBox.contentstream.PDFStreamEngine.processpage(PDFStreamEngine.java:156)
at org.apache.pdfBox@2.0.21/org.apache.pdfBox.text.LegacyPDFStreamEngine.processpage(LegacyPDFStreamEngine.java:144)
at org.apache.pdfBox@2.0.21/org.apache.pdfBox.text.PDFTextStripper.processpage(PDFTextStripper.java:397)
at org.apache.pdfBox@2.0.21/org.apache.pdfBox.text.PDFTextStripper.processpages(PDFTextStripper.java:325)
at org.apache.pdfBox@2.0.21/org.apache.pdfBox.text.PDFTextStripper.writeText(PDFTextStripper.java:272)
at org.apache.pdfBox@2.0.21/org.apache.pdfBox.text.PDFTextStripper.getText(PDFTextStripper.java:233)
at PDFReader/pdfreader.PdfReader.readPDF(PdfReader.java:17)
at PDFReader/pdfreader.PdfReader.main(PdfReader.java:32)
Caused by: java.lang.classNotFoundException: org.apache.fontBox.FontBoxFont
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.classLoader.loadClass(ClassLoader.java:522)
... 14 more
我在Eclipse的Java构建路径中包含了commons-logging-1.1.jar和pdfBox-2.0.21.jar。
解决方法
我解决了此问题,并在路径上添加了fontbox-2.0.21.jar。