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 at org.apache.pdfbox.cos.COSDocument.(COSDocument.java:49) at 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 で。 javax.swing.JComponent.processMouseEvent(JComponent.java:3321) で java.awt.Component で processMouseEvent(Component.java:6508)。java.awt.Container.dispatchEventImpl(Component.java:4861) で java.awt.Container.processEvent(Container.java:2229) で java.awt.Container.dispatchEventImpl(Container.java) で processEvent(Component.java:6270) :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 で。 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:703)でdispatchEvent(Component.java:4687)、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) の 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(Native Method) で 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.java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151) での pumpEventsForFilter(EventDispatchThread.java:163) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147) での: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$1.run(URLClassLoader.java:355) で java.security.AccessController.doPrivileged(Native Method) で java.net.URLClassLoader.findClass(URLClassLoader.java:354) で java.lang. ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ... 39 もっと見る