PrintServiceLookup.lookupDefaultPrintService()始终返回null。
安装了打印机,它可以工作......
lpstat -d
返回
system default destination: Canon-MP560-2
此外,
uname -a
返回
... 3.13.0-30-generic #55-Ubuntu SMP Fri Jul 4 21:40:53 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
在Eclipse中编写所有内容:Luna Release(4.4.0)。除了安装Jasper Reports及其无数的依赖项之外,还没有进行大量的自定义。还安装了window-builder,就是这样。一切都是开箱即用的。打印机是一台网络打印机,但是再次...... LibreOffice打印它没有任何困难。我非常困惑。
在调试器中观察事物,这总是返回null。
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
PrintService myPrinter = PrintServiceLookup.lookupDefaultPrintService();
在这两种情况下,服务== myPrinter == null。
有什么想法吗?
答案 0 :(得分:2)
在https://stackoverflow.com/a/37492176/1995068中查看答案。结果PrintServiceLookup只能找到在CUPS的printer.conf中定义为<DefaultPrinter>
的默认打印机。通过cups命令行添加默认打印机时,它被定义为<Printer>
,而这似乎不适用于PrintServiceLookup
答案 1 :(得分:1)
想出来。
如果你只是解压缩eclipse并在你的主目录中运行它......似乎用Java编译的东西将无法与操作系统很好地协同工作。像这样进行“本地”安装的原因是因为当你执行“sudo apt-get install eclipse”时,Ubuntu的默认配置是为了给你3.8版本。出于某些非常具体的原因,我需要当前版本,即4.4。
为了解决这个问题,我做了一个apt-get安装的eclipse,然后在/ usr / lib / eclipse上解压缩(以root身份)eclipse存档。最后,在/ usr / bin / eclipse和/ usr / lib / eclipse / eclipse之间建立一个符号链接,然后开始清理(重新安装丢失的pacakges等)。完成所有操作后,我编译的应用程序就可以将作业转储到打印队列中。
当然,重新安装的行为完全有可能导致我创建的其他一些混乱被修复。如果其他人有这个问题,并且他们的eclipse副本以相同的方式安装,那么它可能是值得尝试的东西。