В нашей распределенной настольной игре Java RMI (где игрок рассматривается как виртуальная кольцевая сеть, где один игрок позволяет сыграть свою очередь, как только он закончит его), иногда клиент не может инициализировать свой графический интерфейс, потому что тот, разрешение на это повышает и исключение. Исключением является следующее:[Java Swing AWT]: почему это исключение связано с моим кодом?
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 91
at java.awt.Container.getComponent(Container.java:327)
at javax.swing.JComponent.rectangleIsObscured(JComponent.java:4391)
at javax.swing.JComponent.paint(JComponent.java:1052)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5219)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
at javax.swing.RepaintManager.paint(RepaintManager.java:1249)
at javax.swing.JComponent._paintImmediately(JComponent.java:5167)
at javax.swing.JComponent.paintImmediately(JComponent.java:4978)
at javax.swing.RepaintManager$3.run(RepaintManager.java:808)
at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
at javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1677)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
, и поэтому клиент зависает в окне входа в систему и не может играть. Иногда это случается, иногда это не так. Мы не знаем почему, потому что, как вы можете видеть, есть какая-то ссылка на наш код, на котором возникло исключение ... мы только поняли, что это проблема с swing/awt ... знаете ли вы что-нибудь?
Если вам кажется, что вам нужно спросить: «Это ошибка в [рамках, используемой буквально миллионами других программ]», ответ почти всегда «НЕТ!». –
Я не думаю, что это ошибка ... Я знаю, что я делаю ошибку где-то, но поскольку трассировка стека исключений не говорит, где, тогда мне трудно понять ... –
Поскольку исключение - «ArrayIndexOutofBounds» в getComponent, первое, что я хотел бы увидеть, это если вы добавили что-то недействительное к одному из ваших менеджеров или контейнеров. –