简体   繁体   中英

Java Print Service: PrintServiceLookup.lookupPrintServices does not return networked printers

If I run my JBoss application from the Windows command prompt I can get the list of printers (including networked printers just fine).

If I run my JBoss application as a Windows service, I only get the list of printers that are directly connected to the machine. The networked printers don't show up.

Here is the Java code I use to get the list of printers:

PrintService[] printerServices = PrintServiceLookup.lookupPrintServices(null, null);

It doesn't appear to be a permissions problem, since according to our administrator, the permissions are setup just fine.

Does some have a better explanation, or is there a set of permissions that might be required to get the networked printers to show up?

You have to run the windows service as a user on the domain that has the appropriate permissions, not as LocalUser.

You can also add networked printers using a tcp/ip connection, and the problem goes away.

My colleague had this very same problem just minutes ago, but on a REDHAT LINUX system. His server had been rebooted and printer functionality worked only half way; lp worked, cups worked, but no access to printers from Java. He found out localhost had disappeared from the hosts file.

His solution: add localhost to hosts file (but since you are on windows, this might not be your solution)

it's appeared to be an issue with the network printers. any printer to be seen by JRE has to be in "shared" state. unfortunately network printers aren't.

see: System Settings->Printers->PDF->->Shared (enable checkbox)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM