Ошибка при использовании Java 1.6.0_29 - PullRequest
0 голосов
/ 15 марта 2012

Я создал java-апплет, который отлично работает на компьютерах с Linux в школе (работает под управлением Java 1.6.0_23).Но недавно я купил себе Mac и установил на него Java 1.6.0_29.Проблема в том, что когда я запускаю программу на своем новом Mac, при запуске у меня появляется несколько ошибок:

Dentist1 is treating patient10


Dentist0 is treating patient11
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
    at sun.awt.RepaintArea.paint(RepaintArea.java:249)
at apple.awt.ComponentModel.handleEvent(ComponentModel.java:263)
at java.awt.Component.dispatchEventImpl(Component.java:4811)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:638)
at java.awt.EventQueue$1.run(EventQueue.java:636)
at java.security.AccessController.doPrivileged(Native Method)
at    java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at     java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)


Dentist1 is treating patient12
at java.awt.EventQueue$2.run(EventQueue.java:652)
at java.awt.EventQueue$2.run(EventQueue.java:650)
at java.security.AccessController.doPrivileged(Native Method)
at       java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:649)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
at sun.awt.RepaintArea.paint(RepaintArea.java:249)
at apple.awt.ComponentModel.handleEvent(ComponentModel.java:263)
at java.awt.Component.dispatchEventImpl(Component.java:4811)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:638)
at java.awt.EventQueue$1.run(EventQueue.java:636)
at java.security.AccessController.doPrivileged(Native Method)
at  java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at  java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:652)
at java.awt.EventQueue$2.run(EventQueue.java:650)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:649)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


Dentist0 is treating patient13


Dentist1 is treating patient14´

Если вам интересно, апплет должен симулировать офис стоматолога с 2 стоматологами и 4 стульямив зале ожидания.У меня есть секретный класс, который гарантирует, что только 4 пациента могут войти в зал ожидания, и что пациент может пойти к стоматологу, если он не занят, два потока стоматолога, которые ждут пациента, а затем лечат их.

Кажется, он работает нормально с первыми 10 пациентами, а затем я получаю эти ошибки, и после этого он продолжает работать без ошибок.Я не знаю, возможно ли вам помочь мне с этой проблемой, не глядя на мой код, но я был бы благодарен за любой совет, почему это происходит только с более новой версией Java.Вероятно, что-то не так с моим кодом, который Java 1.6.0_23 не обнаружит?

Ответы [ 2 ]

0 голосов
/ 15 марта 2012

Код классов Java не самый лучший, когда дело доходит до обработки нулевых значений. Проверьте, передаете ли вы какие-либо нулевые значения вашим компонентам Swing и измените их на ненулевые значения.

0 голосов
/ 15 марта 2012

Довольно легко написать код, который работает.Ошибка в том, что ошибка не проявляется, пока вы не измените ОС, аппаратное обеспечение или версию Java.Значительная часть проблем, возникающих при обновлении с Java 5.0 до Java 6 или с 6 до 7, связана с такого рода ошибками.

Вероятно, вы повреждаете свою объектную модель Swing, но обновление 23 Java 6 неуведомление.Однако, скорее всего, это будет разница в используемом оборудовании / ОС.

Я бы скачал обновление Java 6 23, чтобы проверить это (или использовать одну и ту же версию в обеих системах)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...