如何解决PDFbox 2.0.20-新的PagePane引发RuntineException
由于我已将PDFbox更新至最新版本(2.0.8-> 2.0.20),因此在实例化PagePane类时遇到运行时错误。
我试图更改JDK版本,还从maven获取最新的依赖关系,将项目切换到maven以摆脱依赖关系。
无论如何,我在执行此原始代码段时出错(在主void中运行):
public static void main(String[] args) {
JFrame f = new JFrame();
f.setSize(1000,1000);
File file = new File("/home/bujakowski/Pobrane/test.pdf");
PDDocument doc;
try {
doc = PDDocument.load(file);
JLabel lab = new JLabel();
PagePane pp = new PagePane(doc,doc.getPage(0).getCOSObject(),new JLabel());
f.add(pp.getPanel());
f.setVisible(true);
} catch (IOException ex) {
}
}
我还尝试了不同的PDF版本-扫描图像,纯文本,混合内容,旧PDF版本和最新版本。
我也已经看到错误可能来自PagePane jar中调用的BufferedImage。 我默认使用JDK 11。
线程“ AWT-EventQueue-0”中的异常java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.NullPointerException在 org.apache.pdfbox.debugger.pagepane.PagePane $ RenderWorker.done(PagePane.java:434) 在java.desktop / javax.swing.SwingWorker $ 5.run(SwingWorker.java:750) 在 java.desktop / javax.swing.SwingWorker $ DoSubmitAccumulativeRunnable.run(SwingWorker.java:847) 在 java.desktop / sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112) 在 java.desktop / javax.swing.SwingWorker $ DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:857) 在java.desktop / javax.swing.Timer.fireActionPerformed(Timer.java:317) 在java.desktop / javax.swing.Timer $ DoPostEvent.run(Timer.java:249)处 java.desktop / java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313) 在 java.desktop / java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770) 在java.desktop / java.awt.EventQueue $ 4.run(EventQueue.java:721)在 java.desktop / java.awt.EventQueue $ 4.run(EventQueue.java:715)在 java.base / java.security.AccessController.doPrivileged(本机方法) 在 java.base / java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) 在 java.desktop / java.awt.EventQueue.dispatchEvent(EventQueue.java:740) 在 java.desktop / java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) 在 java.desktop / java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) 在 java.desktop / java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) 在 java.desktop / java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) 在 java.desktop / java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.desktop / java.awt.EventDispatchThread.run(EventDispatchThread.java:90) 引起原因:java.util.concurrent.ExecutionException: java.lang.NullPointerException在 java.base / java.util.concurrent.FutureTask.report(FutureTask.java:122) 在java.base / java.util.concurrent.FutureTask.get(FutureTask.java:191) 在java.desktop / javax.swing.SwingWorker.get(SwingWorker.java:613)处 org.apache.pdfbox.debugger.pagepane.PagePane $ RenderWorker.done(PagePane.java:414) ... 19更多原因于:java.lang.NullPointerException org.apache.pdfbox.debugger.ui.RotationMenu.getRotationDegrees(RotationMenu.java:102) 在 org.apache.pdfbox.debugger.pagepane.PagePane $ RenderWorker.doInBackground(PagePane.java:391) 在 org.apache.pdfbox.debugger.pagepane.PagePane $ RenderWorker.doInBackground(PagePane.java:384) 在java.desktop / javax.swing.SwingWorker $ 1.call(SwingWorker.java:304) 在java.base / java.util.concurrent.FutureTask.run(FutureTask.java:264) 在java.desktop / javax.swing.SwingWorker.run(SwingWorker.java:343)处 java.base / java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 在 java.base / java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:628) 在java.base / java.lang.Thread.run(Thread.java:834)中的异常 线程“ AWT-EventQueue-0”处的java.lang.NullPointerException org.apache.pdfbox.debugger.pagepane.PagePane.ancestorAdded(PagePane.java:271) 在 java.desktop / javax.swing.AncestorNotifier.fireAncestorAdded(AncestorNotifier.java:86) 在 java.desktop / javax.swing.AncestorNotifier.componentShown(AncestorNotifier.java:193) 在 java.desktop / java.awt.Component.processComponentEvent(Component.java:6463) 在java.desktop / java.awt.Component.processEvent(Component.java:6411) 在java.desktop / java.awt.Container.processEvent(Container.java:2263) 在java.desktop / java.awt.Window.processEvent(Window.java:2049)处 java.desktop / java.awt.Component.dispatchEventImpl(Component.java:5007) 在 java.desktop / java.awt.Container.dispatchEventImpl(Container.java:2321) 在java.desktop / java.awt.Window.dispatchEventImpl(Window.java:2772) 在java.desktop / java.awt.Component.dispatchEvent(Component.java:4839) 在 java.desktop / java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) 在java.desktop / java.awt.EventQueue $ 4.run(EventQueue.java:721)在 java.desktop / java.awt.EventQueue $ 4.run(EventQueue.java:715)在 java.base / java.security.AccessController.doPrivileged(本机方法) 在 java.base / java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) 在 java.base / java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) 在java.desktop / java.awt.EventQueue $ 5.run(EventQueue.java:745)在 java.desktop / java.awt.EventQueue $ 5.run(EventQueue.java:743)在 java.base / java.security.AccessController.doPrivileged(本机方法) 在 java.base / java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) 在 java.desktop / java.awt.EventQueue.dispatchEvent(EventQueue.java:742) 在 java.desktop / java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) 在 java.desktop / java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) 在 java.desktop / java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) 在 java.desktop / java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) 在 java.desktop / java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.desktop / java.awt.EventDispatchThread.run(EventDispatchThread.java:90) 线程“ AWT-EventQueue-0”中的异常java.lang.NullPointerException 在 org.apache.pdfbox.debugger.pagepane.PagePane.ancestorRemoved(PagePane.java:283) 在 java.desktop / javax.swing.AncestorNotifier.fireAncestorRemoved(AncestorNotifier.java:108) 在 java.desktop / javax.swing.AncestorNotifier.componentHidden(AncestorNotifier.java:208) 在 java.desktop / java.awt.AWTEventMulticaster.componentHidden(AWTEventMulticaster.java:197) 在 java.desktop / java.awt.AWTEventMulticaster.componentHidden(AWTEventMulticaster.java:197) 在 java.desktop / java.awt.Component.processComponentEvent(Component.java:6466) 在java.desktop / java.awt.Component.processEvent(Component.java:6411) 在java.desktop / java.awt.Container.processEvent(Container.java:2263) 在java.desktop / java.awt.Window.processEvent(Window.java:2049)处 java.desktop / java.awt.Component.dispatchEventImpl(Component.java:5007) 在 java.desktop / java.awt.Container.dispatchEventImpl(Container.java:2321) 在java.desktop / java.awt.Window.dispatchEventImpl(Window.java:2772) 在java.desktop / java.awt.Component.dispatchEvent(Component.java:4839) 在 java.desktop / java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) 在java.desktop / java.awt.EventQueue $ 4.run(EventQueue.java:721)在 java.desktop / java.awt.EventQueue $ 4.run(EventQueue.java:715)在 java.base / java.security.AccessController.doPrivileged(本机方法) 在 java.base / java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) 在 java.base / java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) 在java.desktop / java.awt.EventQueue $ 5.run(EventQueue.java:745)在 java.desktop / java.awt.EventQueue $ 5.run(EventQueue.java:743)在 java.base / java.security.AccessController.doPrivileged(本机方法) 在 java.base / java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) 在 java.desktop / java.awt.EventQueue.dispatchEvent(EventQueue.java:742) 在 java.desktop / java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) 在 java.desktop / java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) 在 java.desktop / java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) 在 java.desktop / java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) 在 java.desktop / java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.desktop / java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。