我有一个构建的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)
我看到的唯一空项是页面范围,我似乎无法设置。