JavaFX-JavaFX.print.PrinterJob.createPrinterJob()在mac上始终为空

JavaFX-JavaFX.print.PrinterJob.createPrinterJob()在mac上始终为空,java,macos,javafx,printing,Java,Macos,Javafx,Printing,我正在使用JavaFX PrinterJob打印节点,如下所示: /** * @param node */ public static final void print(Node node) throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException { Printer printer = Printer.getD

我正在使用JavaFX PrinterJob打印节点,如下所示:

    /**
 * @param node
 */
public static final void print(Node node)
        throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
    Printer printer = Printer.getDefaultPrinter();
    PageLayout pageLayout = printer.createPageLayout(Paper.A4, PageOrientation.LANDSCAPE,
            Printer.MarginType.HARDWARE_MINIMUM);
    PrinterJob job = PrinterJob.createPrinterJob();

    if (job != null && job.showPrintDialog(CommonConstants.geMasterStage())) {
        boolean success = job.printPage(pageLayout, node);
        if (success) {
            job.endJob();

        }
    }
}
它在windows上运行良好,但是,
Printer.getDefaultPrinter()
在mac上始终为空,因此我确保打印机可用,并且
printer.getAllPrinters()
返回空数组

值得注意的是,
java.awt.print.PrinterJob.getPrinterJob()
在windows和mac上都可以正常工作


问题是什么?我做错了什么

我也有同样的问题。这个问题仍然没有解决。但我发现在控制台中刷新打印机列表后,它可以获取打印机。我在createPrinterjob()之前添加了一行,它有时会工作(不总是)


“Runtime.getRuntime().exec(“lpstat-p-d”)”

我也有同样的问题,每当我使用
Printer.getAllPrinters()
检查可用的打印机时,它会显示所有可用的打印机,但
createPrinterJob()
总是返回空值


因此,我在MacOS中的系统首选项下的设置下,右键单击打印机和扫描仪下的打印机,重置了打印系统。重置打印系统后,再次将打印机添加到打印机列表中。然后在Java上再次运行
createPrinterJob()
,之后再也没有收到空值。

对我来说效果很好。你安装了打印机吗?在这种情况下,
Printer.getAllPrinters()
应该返回一个非空列表。@JoséPereda是的,我有,,,它与java.awt打印机作业一起工作很好,,,,这是weirdI遇到的相同错误,你解决了吗?@pcambre-nope,,我们实现了其他一些东西,,,这对我有效。因为我没有使用迁移助手设置这个m1mbp,所以没有设置打印机。一旦这样做了,事情就会像以前一样运转。