PrintServiceLookup.lookupDefaultPrintService()始终返回null

时间:2014-07-15 01:26:23

标签: java eclipse ubuntu printing

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。

有什么想法吗?

2 个答案:

答案 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副本以相同的方式安装,那么它可能是值得尝试的东西。