2010-08-27 99 views
2

我有客户端,它在使用旧的Brother打印机从JAVA应用程序打印时出现问题。他得到的例外是“打印机不接受作业”。Java“打印机不接受作业”旧Brother打印机

其他应用程序(不是Java应用程序)管理使用这些打印机进行打印。他切换到一台新的打印机(也是兄弟),而不更换驱动程序,然后它的工作。

这个想法是他不能改变所有的打印机,他也不想重新安装所有打印机,因为他拥有数百台计算机和打印机的网络。

我在不同的论坛上看到,在java版本1.5和1.6中有一个错误,但是这个应用程序只适用于java 1.5或更高版本......所以他不能切换到java 1.4(使用java 1.4, )。

你能不能帮我一下,给我一些可能的解决方案来解决这个问题?

回答

1

看起来这是this bug。不幸的是,它被标记为低优先级,并且由于没有人打扰它投票,它正在被推迟。

This forum thread给出了一些有用的背景(回复#11)和一个解决方法(回复#9),它在尝试打印文件时会忽略打印机的状态。

如果您希望在Java 7中修复此错误,则仍有时间submit a patch

编辑

我知道有人争议的解决办法,但我没有得到我的头周围的问题。无论如何,应该有可能开发一个更好的版本,或者使用相同的方法或不同的方法。如果子类化和使用反射来调整私有状态不起作用,那么您可以下载Java 6源代码,修复错误并重建。

我敢肯定,如果有人为你解决问题,那会很好,但让我们现实一点。这看起来像一个影响很少人的问题。 IMO,成功的你最好的机会是:

  • 自我帮助,
  • 为Oracle支持合同付款,或
  • 聘请独立技术专家。

其中,自助有最好的机会给你一个快速的解决方案...假设你有人在这种内部工作的技能。

+0

我看到了这个线程。我知道问题是什么,但我解决不了。发布在回复#9中的解决方案不起作用(如回复#10所证实的)...因为在提供的解决方案中,试图用实现3接口的类的引用替换为仅引用类的引用实现其中一个接口......因此产生错误。所以......如果有人有,我仍然需要一个解决方案。 – 2010-08-27 14:02:24

2

找到了一个使用字节码操作的解决方法http://copy-con.blogspot.com/2009/12/printer-is-not-accepting-job.html

+0

如果问题可以通过字节码操作来解决,**肯定有人可以将其转换为源代码补丁并将其提交给OpenJDK项目。** – 2012-11-27 09:51:59

+0

这是一种解决方法,可以完全忽略打印机状态,而不是解决为什么有时Java在Windows上无法正确检测打印机状态。 – 2012-11-27 11:58:32

+0

好的,所以(也许)解决方法不是一个合适的解决方案。但是我的一般观点仍然是,如果这个问题对于人们来说很重要,那么就有资源来制定一个合适的解决方案,并将它回馈给它。 (实际上,一个系统属性告诉堆栈忽略打印机状态*可能是一个可以接受的解决方法...在没有更好的情况下,显然需要......) – 2012-11-27 22:40:46