【发布时间】:2012-08-17 04:02:24
【问题描述】:
我有一种方法可以创建 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();
}
这是完整的错误日志:
线程“AWT-EventQueue-0”中的异常 java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 在 org.apache.pdfbox.cos.COSDocument.(COSDocument.java:49) 在 org.apache.pdfbox.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.processMouseEvent(Component.java:6508) 在 javax.swing.JComponent.processMouseEvent(JComponent.java:3321) 在 java.awt.Component.processEvent(Component.java:6270) 在 java.awt.Container.processEvent(Container.java:2229) 在 java.awt.Component.dispatchEventImpl(Component.java:4861) 在 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) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:703) 在 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(本机方法) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 在 java.awt.EventQueue$4.run(EventQueue.java:676) 在 java.awt.EventQueue$4.run(EventQueue.java:674) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.ProtectionDomain$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) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:97) 引起:java.lang.ClassNotFoundException:org.apache.commons.logging.LogFactory 在 java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:423) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:356) ... 39 更多
【问题讨论】:
-
您能否发布完整的日志。某处一定有一个 ClassNotFound 异常。包括所有相关的 jar,它应该可以工作。
-
完成。往上看。谢谢!