2015-04-02 80 views
1

我试图通过JavaFX应用程序打印收据,但每次尝试打印时都会收到NullPointerException使用PrinterJob时获取NullPointerException

import javafx.print.PrinterJob; 
// More Imports 

public class PrintBasket 
{ 
    public PrintBasket() 
    { 
     VBox vboxPages = new VBox(); 
     // Some Code 
     printAction(); 
    } 

    public void printAction() 
    { 
     PrinterJob printerJob = PrinterJob.createPrinterJob(); 

     // Some Code 

     if(printerJob.printPage(vboxPages)) { // Getting exception at this line 
       printerJob.endJob(); 
     } 
    } 
} 

我得到的例外情况如下:

Exception in thread "JavaFX Application Thread" java.lang.NullPointerException 
    at Dialogs.PrintBasket.printAction(PrintBasket.java:638) 
    at Dialogs.PrintBasket.<init>(PrintBasket.java:214) 
    at Tabs.PrintUtil.<init>(PrintUtil.java:75) 

我的Java是8版本,我的操作系统是Ubuntu的01年4月14日

+0

什么是borderpane? – SomeJavaGuy 2015-04-02 06:21:33

+2

从[PrinterJob.createPrinterJob'的JavaDocs](http://docs.oracle.com/javase/8/javafx/api/javafx/print/PrinterJob.html#createPrinterJob--)*“如果没有打印机可用的,这将返回null,有些平台可能会提供一个伪打印机,它会创建一个文档,只要平台也将它们枚举为打印机就可以列举出来“* – MadProgrammer 2015-04-02 06:23:09

+0

@KevinEsche这是一个错字。修复。 – UrsinusTheStrong 2015-04-02 06:25:20

回答

0

从JavaDoc中PrinterJob.createPrinterJob “如果没有 打印机可用,则返回null。某些平台可能会提供 虚拟打印机,它会创建一个文档,这些将被列举为 h ERE只要该平台还列举了他们,如果他们是 打印机”

如上评论指出通过@MadProgrammer,我没有安装任何打印机,这就是为什么我得到一个NullPointerException。所以,我继续安装cups-pdf

我安装cups-pdf如下 -

sudo apt-get install cups-pdf 

,然后利用这点我是能够打印收据(来源:Way to Create PDF Printer in Ubuntu)创建的PDF打印机。现在,我在打印时没有收到任何NullPointerException

相关问题