Java打印服务:PrintServiceLookup.lookupPrintServices不返回联网打印机

时间:2009-06-23 21:03:48

标签: java windows printing service

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

如果我将JBoss应用程序作为Windows服务运行,我只会获得直接连接到该计算机的打印机列表。网络打印机不显示。

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

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

它似乎不是权限问题,因为根据我们的管理员,权限设置得很好。

是否有一些更好的解释,或者是否有一组权限可能需要联网打印机出现?

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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