Java Print Service:PrintServiceLookup.lookupPrintServices不返回联网的打印机

如果我从Windows命令提示符运行我的JBoss应用程序,我可以得到打印机列表(包括networking打印机就好)。

如果我作为Windows服务运行我的JBoss应用程序,我只能得到直接连接到本机的打印机列表。 networking打印机不显示。

这里是我用来获取打印机列表的Java代码:

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

它似乎不是一个权限问题,因为根据我们的pipe理员,权限设置就好了。

是否有一些更好的解释,或者是否有一组权限可能需要让networking打印机显示?

您必须以具有相应权限的域用户身份运行Windows服务,而不是以LocalUser身份运行。

您还可以使用tcp / ip连接添加联网的打印机,问题就会消失。

我的同事几分钟前就有同样的问题,但在REDHAT LINUX系统上。 他的服务器已经重新启动,打印机功能只能工作一半。 LP工作,杯子工作,但没有访问从Java的打印机。 他发现localhost已经从hosts文件中消失了。

他的解决方案:将localhost添加到主机文件(但由于您在Windows上,这可能不是您的解决方案)

这似乎是网络打印机的问题。 任何被JRE看见的打印机必须处于“共享”状态。 不幸的是网络打印机不是。

请参阅:系统设置 – >打印机 – > PDF – > – >共享(启用复选框)