java - Printeren kan ikke få et håndtag

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg indstiller nogle tests til mit udskriftsmodul. Testen ser for øjeblikket sådan ud:


    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


Det virker lokalt startet fra Eclipse og via Maven/Tycho build.


Når startet på vores build server (Jenkins, men jeg er ikke så sikker på, at det er relevant), bliver følgende undtagelse kastet:


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)


Det giver mig ingen mening. Der er et par flere tests i denne reaktor, men jeg tror, ​​at alle dem lukker deres ressourcer korrekt. Og det ville være meget underligt, at lige efter at have tilføjet denne test var alle håndtagene udtømt.


Så der skal være en grund til, at Printer ikke kan initialiseres. Hvad er denne grund? Hvordan reparerer jeg min kode?


Bemærk: Jeg har prøvet forskellige printere, og initialisering af de fleste bringer ovenstående fejl (måske relateret til den hovedløse bygning?), men nogle af dem arbejder f.eks. 'Microsoft XPS Document Writer' og 'Fax'.

Bedste reference