打印机无法获得处理

时间:2018-05-17 08:09:03

标签: java windows swt

我正在为我的打印模块设置一些测试。测试目前看起来像这样:

    PrinterData pdfPrinter = null;

    for (final PrinterData p : Printer.getPrinterList()) {
        if (p.name.contains("PDF")) {
            pdfPrinter = p;
            break;
        }
    }
    Assert.assertNotNull("No PDF printer found!", pdfPrinter);

    pdfPrinter.fileName = Paths.get("target/" + UUID.randomUUID().toString() + ".pdf");
    pdfPrinter.printToFile = true;

    Printer printer = new Printer(pdfPrinter);
    // and now do some stuff

它在本地工作从Eclipse开始并通过Maven / Tycho构建。

在我们的构建服务器上启动时(Jenkins,但我不确定它是否相关),会抛出以下异常:

org.eclipse.swt.SWTError: No more handles
    at org.eclipse.swt.SWT.error(SWT.java:4308)
    at org.eclipse.swt.SWT.error(SWT.java:4197)
    at org.eclipse.swt.SWT.error(SWT.java:4168)
    at org.eclipse.swt.printing.Printer.create(Printer.java:269)
    at org.eclipse.swt.graphics.Device.<init>(Device.java:137)
    at org.eclipse.swt.printing.Printer.<init>(Printer.java:203)

这对我没有任何意义。在这个反应堆中还有几个测试,但我相信所有测试都能正确地关闭它们的资源。在添加这些测试之后,所有的手柄都耗尽了,这将是非常奇怪的。

因此必须有一个原因导致Printer无法初始化。这是什么原因?如何修复代码?

注意:我尝试过不同的打印机,并且初始化大多数会带来上述错误(可能与无头版本相关?),但其中一些可以正常工作,例如&#34; Microsoft XPS Document Writer&#34;和&#34;传真&#34;。

0 个答案:

没有答案