我有一种方法可以创建 PDF 并将其保存在用户的 Documents 文件夹(当然是 Windows)中,文件名为“temp.pdf”。该方法的最后一行调用了另一个方法,该方法旨在将 pdf 文件打印到纸上。不幸的是,我收到以下错误:
线程“AWT-EventQueue-0”中的异常 java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
我正在使用 PDFBox 进行打印。代码并没有太多涉及,但我无法弄清楚我做错了什么。一切都编译得很好。这是一个运行时错误。谁能看到我的错误?谢谢。
public static void printToPaper(String fPath) throws Exception {
System.out.println("1"); //outputs correctly
PDDocument document = new PDDocument(); //error occurs right here
System.out.println("2"); //never appears in output queue
document = PDDocument.load(fPath);
PrinterJob printJob = PrinterJob.getPrinterJob();
PrintService[] printService = PrinterJob.lookupPrintServices();
printJob.setPrintService(printService[0]);
document.silentPrint( printJob );
document.close();
}
这是完整的错误日志:
org.apache.pdfbox.cos.COSDocument.(COSDocument.java:49) at org.apache.pdfbox 的线程“AWT-EventQueue-0”java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 中的异常。 pdmodel.PDDocument.(PDDocument.java:125) 在kidmath.PrintPDF.printToPaper(PrintPDF.java:12) 在kidmath.Print.printPaper(Print.java:83) 在kidmath.JDlgPrintSettings.btnPrintMouseClicked(JDlgPrintSettings.java:271)在kidmath.JDlgPrintSettings.access$600(JDlgPrintSettings.java:10) 在kidmath.JDlgPrintSettings$7.mouseClicked(JDlgPrintSettings.java:170) 在java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270) 在java.awt.Component。 java.awt.Component 的 javax.swing.JComponent.processMouseEvent(JComponent.java:3321) 的 processMouseEvent(Component.java:6508)。processEvent(Component.java:6270) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4861) at java.awt.Container.dispatchEventImpl(Container.java :2287) 在 java.awt.Component.dispatchEvent(Component.java:4687) 在 java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) 在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:4501) 在 java .awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 在 java.awt.Container.dispatchEventImpl(Container.java:2273) 在 java.awt.Window.dispatchEventImpl(Window.java:2719) 在 java.awt.Component。 dispatchEvent(Component.java:4687) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:703) at java.awt.EventQueue.access$000(EventQueue.java:102) 在 java.awt.EventQueue$3.run(EventQueue.java:662) 在 java.awt.EventQueue$3.run(EventQueue.java:660) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.security .ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:676) at java.awt.EventQueue $4.run(EventQueue.java:674) 在 java.security.ProtectionDomain 的 java.security.AccessController.doPrivileged(Native Method) $1.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java :673) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244) 在 java.awt.EventDispatchThread。pumpEventsForFilter(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java :139) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:97) 引起:java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory at java.net.URLClassLoader$1.run(URLClassLoader.java: 366) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang 的 java.security.AccessController.doPrivileged(Native Method) 的 java.net.URLClassLoader$1.run(URLClassLoader.java:355)。在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java: 的 ClassLoader.loadClass(ClassLoader.java:423)308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:356) ... 39 更多