Java构建的程序停止显示选择打印机对话框

时间:2018-02-15 20:24:41

标签: java printing

我有一个构建的Java程序,它作为一个独立的.Jar文件运行。最后一次构建是在11月开始的,它与之前的版本一起运行顺利。

已停止工作的功能是用户希望打印收据的位置,以及用于显示“选择打印机”对话框屏幕的程序。

但截至今天,当点击运行此功能的按钮时,没有任何反应。按钮单击效果按原样运行,因此单击已注册,但不会发生任何其他情况。 我已尝试在我自己和用户计算机上运行.jar文件,但结果相同。

然而,当我在IntelliJ中运行项目并单击按钮时,一切都按预期工作,没有任何例外或警告任何地方。然后我尝试使用这个相同的代码重建它。但同样,作为一个单独的.jar文件,没有任何反应。用户使用与2天前预期完全相同的功能,使用相同的.jar文件,该文件现在不能正常工作。

编辑:在命令窗口中打开jar文件会在下面提到的行中显示NullPointerException。

远程调试为相应的对象提供了解释,以引起异常:

JavaFX PrinterJob Printer Microsoft Print to PDF
 Collation = UNCOLLATED
 Copies = 1
 Sides = ONE_SIDED
 JobName = JavaFX Print Job
 Page ranges = null
 Print color = COLOR
 Print quality = NORMAL
 Print resolution = Feed res=600dpi. Cross Feed res=600dpi.
 Paper source = Paper source : Automatic
 Page layout = Paper=Paper: A4 size=210.0x297.0 MM Orient=PORTRAIT leftMargin=54.0 rightMargin=54.0 topMargin=54.0 bottomMargin=54.0
Job Status = NOT_STARTED



public class PrintPage {

public void printSetup(Node node, PageOrientation or)
//The class where it prompts for the printer to be used.

{
    Stage stage = new Stage();
    PrinterJob job = PrinterJob.createPrinterJob();
    if (job != null) {
        //Line below gives NullPointerException at the job.showPrintDialog(stage) item
        if (job.showPrintDialog(stage)) print(job, node, or);
    }
    stage.close();
}

在javafx PrinterJob类中,errorstack从上面一行引出到此部分。

public synchronized boolean showPrintDialog(Window owner) {
    // TBD handle owner
    if (!isJobNew()) {
        return false;
    } else {
       //This line is the next in the stack
        return jobImpl.showPrintDialog(owner);
    }
}

导致错误:

com.sun.prism.j2d.print.J2DPrinterJob.showPrintDialog(J2DPrinterJob.java:161)

我看到的唯一空项是页面范围,我似乎无法设置。

0 个答案:

没有答案