Bestimmten Drucker in Java auswählen, ohne Drucker Dialog

Hallo,
ich habe ein Problem mit der automatischen Druckerauswahl in Java. Sprich, die Druckerauswahl geschieht im Programm, der Druckerdialog soll nicht erscheinen. Wenn ich die Abfrage nach printDialog() weglasse, wird automatisch der Standard-Drucker des Systems ausgewählt.
Ich habe im Programm Einstellungen, bei denen die verschiedenen Drucker festgelegt werden können. Dazu werden die Drucker ausgelesen und die Werte in eine comboBox übernommen. Entsprechend der Auswahl werden die Werte danach in eine Datenbank geschrieben.
Der Name des Fax-Druckers ist im String FaxDrucker gespeichert.
Die Variable Drucker ist PrintService Drucker. Die liefert auch den ausgewählten Drucker.
Ich suche nun nach einer Möglichkeit im PrintRequestAttributeSet den Drucker fest zu legen. Leider habe ich bisher keine (funktionierende) Möglichkeit gefunden (Vielleicht einfach nur die falschen Schlüsselwörte in Google eingetragen). Da ich aber Möglichkeiten gefunden habe den Schacht des Druckers fest zu legen, vermute ich dass es auch gehen sollte nur den Drucker auszuwählen. Anbei einige Codefragmente.

{try { flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
    	  flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
	      PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet();
	      attrs.add(new PrinterName(Drucker.getName(), null)); //Zeile 134 ist hier, der Druckername wird nicht erkannt
//            attrs.add(new PrinterName(FaxDrucker, null)); //funktioniert auch nicht
//            attrs.add(new PrinterName("kein Drucker", null)); //kann nicht funktionieren, liefert aber das gleiche Ergebnis!
	      attrs.add(OrientationRequested.PORTRAIT);
	      attrs.add(MediaSizeName.ISO_A4);
	      attrs.add(new Copies(1));        
	      attrs.add(MediaSize.findMedia(8, 4, MediaSize.INCH));        
	      attrs.add(new PrinterResolution(300, 300, PrinterResolution.DPI));
	      attrs.add(new JobName("Briefansicht", null));
        
	      if(BKDrucki == 1){BriefkopfEinfuegen();}
	      if(BFDrucki == 1){BrieffussEinfuegen();}
	      if(BKDrucki == 1){UnterschriftEinfuegen();}
	      
	      job = PrinterJob.getPrinterJob();
	      pf = job.defaultPage();
	      temp = pf.getPaper(); 
	      temp.setImageableArea(0, 0, temp.getWidth(), temp.getHeight());
	      pf.setPaper(temp); 
	      job.setPrintable((Printable) this, pf);

public void DruckerAusgeben() {
	PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
	{ int AnzahlDrucker = services.length;
	  int i = 0; 
	  while (i< AnzahlDrucker) {
		  PrintService ps = services**;
		  if (ps.getName().contains(FaxDrucker)) {Drucker = ps;}
		  i++;
	  }
	}
}

Folgende Fehlermeldung erscheint:
at javax.print.attribute.AttributeSetUtilities.verifyAttributeValue(AttributeSetUtilities.java:552)
at javax.print.attribute.HashAttributeSet.add(HashAttributeSet.java:304)
at Drucken.BriefFaxen.dateiDrucken(BriefFaxen.java:134)

Ich würde mich sehr über Hilfe freuen.

Vielen Dank

Frank

Konkret helfen werde ich vermutlich nicht können, aber … die Fehlermeldung ist etwas unvollständig. Ist das, was da fliegt, eine ClassCastException? (Websuchen liefern da recht schnell recht viel, deswegen die gezielte Nachfrage…)

Ein Kleines, compilierbares Beispiel wäre gut, ansonsten ist die Versuchung sehr groß, auf das erstbeste Suchergebnis (i.e. https://stackoverflow.com/questions/11801159/how-to-print-without-showing-printdialog-in-java ) zu verweisen.

Hallo,

in der Antwort auf die Frage stand tatsächlich die Lösung.
job.setPrintService(ps);

in meinem Fall:
job.setPrintService(Drucker);

Vielen Dank