如果我从Windows命令提示符运行我的JBoss应用程序,我可以获得打印机列表(包括网络打印机就好了)。
如果我将JBoss应用程序作为Windows服务运行,我只会获得直接连接到该计算机的打印机列表。网络打印机不显示。
以下是我用来获取打印机列表的Java代码:
PrintService[] printerServices = PrintServiceLookup.lookupPrintServices(null, null);
它似乎不是权限问题,因为根据我们的管理员,权限设置得很好。
是否有一些更好的解释,或者是否有一组权限可能需要联网打印机出现?
答案 0 :(得分:5)
您必须以具有相应权限的域上的用户身份运行Windows服务,而不是LocalUser。
您还可以使用tcp / ip连接添加联网打印机,问题就会消失。
答案 1 :(得分:0)
我的同事在几分钟之前遇到了同样的问题,但是在REDHAT LINUX系统上。他的服务器已重新启动,打印机功能只有一半; lp工作,杯子工作,但无法从Java访问打印机。他发现localhost已经从hosts文件中消失了。
他的解决方案:将localhost添加到hosts文件中(但由于你在Windows上,这可能不是你的解决方案)
答案 2 :(得分:0)
这似乎是网络打印机的一个问题。 JRE看到的任何打印机都必须处于“共享”状态。不幸的是网络打印机不是。
请参阅:系统设置 - >打印机 - > PDF-> - >共享(启用复选框)