Printer is not accepting job

Ok ne mein Fehler passt. Der letzte Aufruf im Stack ist:

sun.print.Win32PrintJob.print(Unknown Source) (Ich rate immer wenn du Libraries benutzt auch die Sources anzuhängen um vllt mal rein zu debuggen)

Wenn ich jetzt in die Klasse sehe und zur passenden Methode gehe sieht man folgende Zeile Code:

Code:
if ((PrinterIsAcceptingJobs)(service.getAttribute(
     PrinterIsAcceptingJobs.class)) == PrinterIsAcceptingJobs.NOT_ACCEPTING_JOBS) {
         throw new PrintException("Printer is not accepting job.");
}

Das bedeutet, dass dein Printer keine Jobs mehr annimmt. Liegt nicht an deinem Code. Desweiteren hast du vermutet, dass die Exception auftritt, wenn er währenddem er druckt einen weiteren Druckauftrag schickt. Da kann ich dich beruhigen, dann würdest du eine andere Exception bekommen:

Code:
synchronized (this) {
     if (printing) {
          throw new PrintException("already printing");
     } else {
          printing = true;
     }
}

Ab und zu in die benutzen Libraries reinschauen lohnt sich. http://www.docjar.com/html/api/sun/print/Win32PrintJob.java.html

Edit:

Ich sehe gerade, dass du einen javax.print.event.PrintJobListener (http://docs.oracle.com/javase/1.4.2/docs/api/javax/print/event/PrintJobListener.html) registrieren kannst. Dieser gibt dir alle Informationen die du brauchst um auf bestimmte Events reagieren zu können. Ich würde aber stark von ausgehen, dass dein Drucker ein Problem hat. Vllt mal Treiber aktualisieren.
 
Zuletzt bearbeitet:
Also Treiber hab ich schon versucht zu aktualisieren .. ist der neuste.

Und es ist keine Vermutung, dass diese Exception auftritt, wenn man während dem Drucken einen weiteren Auftrag schickt. Ich habe das bestimmt schon 100 mal probiert und komm nicht weiter.

Habe aber gerade einen interessanten Beitrag gefunden:
http://copy-con.blogspot.de/2009/12/printer-is-not-accepting-job.html

Könnte das weiterhelfen?

Ansonsten - gibt es nicht die Möglichkeit in Java eine Warteschlange für die Druckaufträge zu "erstellen"?
 
Achso und zu dem PrintJobListener:

printJobNoMoreEvents=PrintEvent on sun.print.Win32PrintJob@1ff44e33

das war das erste was ich versucht hatte ;D
 
Also hab jetzt alles durch - es liegt an meinem Drucker, Windows, oder Treibern jedenfalls nicht an meinem Code.

Ich würde jetzt eine Queue machen und diese alle 15 Sekunden abfragen, wollte jetzt nur noch fragen wie ich das am besten realisieren soll ... Endlosschleife?
 
Habe es endlich hinbekommen ;D

Queue/while-Schleife/neuer Thread/viel viel Lesen und Nachdenken haben zum erfolg geführt ...

Wenn jemand interessiert an einer ausführlichen Lösung ist kann er mich gerne anschreiben ^^
 
Zurück