2010-08-27 1 views
2

У меня есть клиент, у которого есть проблема с печатью из приложений JAVA с использованием старых принтеров Brother. Исключением, которое он получает, является «Принтер не принимает задания».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.

EDIT

Я знал, что кто-то оспаривал обходной путь, но я не получил мою голову вокруг проблемы. Как бы то ни было, должно быть возможно разработать лучшую версию, либо используя тот же подход, либо другой. Если подкласс и использование рефлексии для настройки частного состояния не работают, вы можете загрузить исходный код Java 6, исправить ошибку и перестроить.

Я уверен, было бы хорошо, если бы у кого-то было решение для вас, но давайте быть реалистами. Это похоже на проблему, которая затрагивает очень мало людей. ИМО, ваши лучшие шансы на успех:

  • самопомощи,
  • платить за контракт на поддержку Oracle, или
  • привлечения независимого технического эксперта.

Из них самопомощь имеет наилучший шанс дать вам быстрое разрешение ... если у вас есть люди, обладающие навыками для такого рода работы в доме.

+0

Я видел эту тему. Я знаю, в чем проблема, но я не могу ее решить. Решение, размещенное в ответе # 9, не работает (как подтверждает ответ # 10) ... потому что в предоставленном решении есть попытка заменить ссылку класса, который реализует 3 интерфейса с ссылкой на класс, который только реализует один из интерфейсов ... поэтому генерируется ошибка. Итак ... Мне все еще нужно решение, если у кого-то есть. –

2

Нашли обходной путь, используя манипуляцию байт-код на http://copy-con.blogspot.com/2009/12/printer-is-not-accepting-job.html

+0

Если проблема может быть решена путем манипуляции с байт-кодом, ** конечно, кто-то может превратить это в патч исходного кода и отправить его в проект OpenJDK.** –

+0

Обходным путем является полное игнорирование состояния принтера, а не исправить, почему иногда Java не обнаруживает статус принтера правильно в Windows. –

+0

ОК, так что (возможно) обходное решение не является подходящим решением. Но мой общий момент остается, если эта проблема важна для людей, ресурсы там, чтобы разработать правильное решение и внести свой вклад. (На самом деле системное свойство, в котором стек стека игнорирует статус принтера, может быть допустимым исправлением ... при отсутствии чего-то лучшего. Очевидно, есть необходимость ...) –