我正在尝试通过JavaFX应用程序打印收据,但每当我尝试打印时,我都会收到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)
My Java是版本8,我的操作系统是Ubuntu 14.04.01
答案 0 :(得分:1)
从PrinterDob.createPrinterJob的JavaDocs&#34;如果没有 打印机可用,这将返回null。有些平台可能提供 伪打印机,用于创建文档。这些将被列举 只要平台也将它们枚举为它们,就在这里 打印机&#34;
正如上面评论中的 @MadProgrammer 所示,我没有安装任何打印机,这就是我获得NullPointerException
的原因。所以,我继续安装cups-pdf
。
我安装了cups-pdf
,如下所示 -
sudo apt-get install cups-pdf
然后创建了一个PDF打印机,使用该打印机我可以打印收据(来源:Way to Create PDF Printer in Ubuntu)。现在,我在打印时没有得到NullPointerException
。