> Estava com problemas em rodar meu brick e não conseguia descobrir
> porque. A exception que acontecia era essa:
> [2009-07-04 10:29:39] Contact Dummy is online.
>>>> chunk #0 bytes read: 10240
> java.lang.IllegalStateException: Thread
> Thread[AWT-EventQueue-2,6,main] is not running in an environment.
> at sneer.foundation.environments.Environments.my(Environments.java:20)
> at sneer.bricks.snapps.system.log.gui.impl.LogConsoleImpl$WidgetLogger$1.consu me(LogConsoleImpl.java:213)
> at sneer.bricks.snapps.system.log.gui.impl.LogConsoleImpl$WidgetLogger$1.consu me(LogConsoleImpl.java:1)
> at sneer.bricks.pulp.reactive.impl.ReceiversImpl$1.consume(ReceiversImpl.java: 30)
> at sneer.bricks.pulp.events.impl.EventNotifierImpl.notify(EventNotifierImpl.ja va:47)
> at sneer.bricks.pulp.events.impl.EventNotifierImpl.notifyReceivers(EventNotifi erImpl.java:32)
> at sneer.bricks.hardware.io.log.workers.notifier.impl.LogNotifierImpl.notifyEn try(LogNotifierImpl.java:30)
> at sneer.bricks.hardware.io.log.workers.notifier.impl.LogNotifierImpl.access$1 (LogNotifierImpl.java:28)
> at sneer.bricks.hardware.io.log.workers.notifier.impl.LogNotifierImpl$1.log(Lo gNotifierImpl.java:23)
> at sneer.bricks.hardware.io.log.impl.LoggerImpl.log(LoggerImpl.java:30)
> at sneer.bricks.hardware.io.log.exceptions.impl.ExceptionLoggerImpl.uncaughtEx ception(ExceptionLoggerImpl.java:24)
> at java.lang.ThreadGroup.uncaughtException(Unknown Source)
> at java.lang.ThreadGroup.uncaughtException(Unknown Source)
> at java.lang.Thread.dispatchUncaughtException(Unknown Source)
> Então fui até o ExceptionLoggerImpl e mandei imprimir o stack trace
> antes de logar a exception:
> public void uncaughtException(Thread ignored, Throwable t1) {
> System.out.println("\n===================================================") ;
> t1.printStackTrace();
> System.out.println("\n===================================================") ;
> try {
> _logger.log(t1);
> } catch (Throwable t2) {
> t2.printStackTrace();
> }
> }
> Isso revelou o problema:
> [2009-07-04 10:27:06] Tuple received: Heartbeat from: Dummy
> [2009-07-04 10:27:08] Tuple published: Heartbeat
>>>> chunk #0 bytes read: 10240
> ===================================================
> java.lang.IllegalStateException: All fields in a Tuple should be
> public and not static. This was not the case with: class
> celio.bricks.filetransfer.FileChunk._isLast Also, tuple classes
> declared as inner classes dont work.
> at sneer.foundation.brickness.Tuple.getFieldValue(Tuple.java:83)
> at sneer.foundation.brickness.Tuple.hashCode(Tuple.java:28)
> at java.util.HashMap.put(Unknown Source)
> at java.util.HashSet.add(Unknown Source)
> at sneer.bricks.pulp.tuples.impl.TupleSpaceImpl.acquire(TupleSpaceImpl.java:18 9)
> at sneer.bricks.pulp.tuples.impl.TupleSpaceImpl.publish(TupleSpaceImpl.java:18 1)
> at celio.bricks.filetransfer.impl.FileSenderImpl.send(FileSenderImpl.java:30)
> at celio.snapps.filetransfer.impl.FileSenderGuiImpl.chooseFileAndSend(FileSend erGuiImpl.java:31)
> at celio.snapps.filetransfer.impl.FileSenderGuiImpl.access$0(FileSenderGuiImpl .java:26)
> at celio.snapps.filetransfer.impl.FileSenderGuiImpl$1.run(FileSenderGuiImpl.ja va:21)
> at sneer.bricks.snapps.contacts.gui.impl.SwingActionAdapter.actionPerformed(Sw ingActionAdapter.java:20)
> at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
> at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
> at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
> at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
> at javax.swing.AbstractButton.doClick(Unknown Source)
> at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
> at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
> at java.awt.Component.processMouseEvent(Unknown Source)
> at javax.swing.JComponent.processMouseEvent(Unknown Source)
> at java.awt.Component.processEvent(Unknown Source)
> at java.awt.Container.processEvent(Unknown Source)
> at java.awt.Component.dispatchEventImpl(Unknown Source)
> at java.awt.Container.dispatchEventImpl(Unknown Source)
> at java.awt.Component.dispatchEvent(Unknown Source)
> at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
> at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
> at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
> at java.awt.Container.dispatchEventImpl(Unknown Source)
> at java.awt.Window.dispatchEventImpl(Unknown Source)
> at java.awt.Component.dispatchEvent(Unknown Source)
> at java.awt.EventQueue.dispatchEvent(Unknown Source)
> at sneer.bricks.hardware.gui.timebox.impl.TimeboxedEventQueueImpl.access$2(Tim eboxedEventQueueImpl.java:1)
> at sneer.bricks.hardware.gui.timebox.impl.TimeboxedEventQueueImpl.superDispatc hEvent(TimeboxedEventQueueImpl.java:62)
> at sneer.bricks.hardware.gui.timebox.impl.TimeboxedEventQueueImpl.access$0(Tim eboxedEventQueueImpl.java:61)
> at sneer.bricks.hardware.gui.timebox.impl.TimeboxedEventQueueImpl$1.run(Timebo xedEventQueueImpl.java:51)
> at sneer.bricks.hardware.cpu.timebox.impl.TimeboxRunner.tryToRun(TimeboxRunner .java:65)
> at sneer.bricks.hardware.cpu.timebox.impl.TimeboxRunner.<init>(TimeboxRunner.j ava:41)
> at sneer.bricks.hardware.cpu.timebox.impl.TimeboxImpl.run(TimeboxImpl.java:16)
> at sneer.bricks.hardware.cpu.timebox.impl.TimeboxImpl$1.run(TimeboxImpl.java:1 0)
> at sneer.foundation.environments.Environments.runWith(Environments.java:11)
> at sneer.bricks.hardware.gui.timebox.impl.TimeboxedEventQueueImpl.dispatchEven t(TimeboxedEventQueueImpl.java:58)
> at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
> at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
> at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
> at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
> at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
> at java.awt.EventDispatchThread.run(Unknown Source)
> Caused by: java.lang.IllegalAccessException: Class
> sneer.foundation.brickness.Tuple can not access a member of class
> celio.bricks.filetransfer.FileChunk with modifiers "private"
> at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
> at java.lang.reflect.Field.doSecurityCheck(Unknown Source)
> at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
> at java.lang.reflect.Field.get(Unknown Source)
> at sneer.foundation.brickness.Tuple.getFieldValue(Tuple.java:81)
> ... 47 more
> java.lang.IllegalStateException: Thread
> Thread[AWT-EventQueue-2,6,main] is not running in an environment.
> at sneer.foundation.environments.Environments.my(Environments.java:20)
> at sneer.bricks.snapps.system.log.gui.impl.LogConsoleImpl$WidgetLogger$1.consu me(LogConsoleImpl.java:213)
> at sneer.bricks.snapps.system.log.gui.impl.LogConsoleImpl$WidgetLogger$1.consu me(LogConsoleImpl.java:1)
> ===================================================
> at sneer.bricks.pulp.reactive.impl.ReceiversImpl$1.consume(ReceiversImpl.java: 30)
> at sneer.bricks.pulp.events.impl.EventNotifierImpl.notify(EventNotifierImpl.ja va:47)
> at sneer.bricks.pulp.events.impl.EventNotifierImpl.notifyReceivers(EventNotifi erImpl.java:32)
> at sneer.bricks.hardware.io.log.workers.notifier.impl.LogNotifierImpl.notifyEn try(LogNotifierImpl.java:30)
> at sneer.bricks.hardware.io.log.workers.notifier.impl.LogNotifierImpl.access$1 (LogNotifierImpl.java:28)
> at sneer.bricks.hardware.io.log.workers.notifier.impl.LogNotifierImpl$1.log(Lo gNotifierImpl.java:23)
> at sneer.bricks.hardware.io.log.impl.LoggerImpl.log(LoggerImpl.java:30)
> at sneer.bricks.hardware.io.log.exceptions.impl.ExceptionLoggerImpl.uncaughtEx ception(ExceptionLoggerImpl.java:24)
> at java.lang.ThreadGroup.uncaughtException(Unknown Source)
> at java.lang.ThreadGroup.uncaughtException(Unknown Source)
> at java.lang.Thread.dispatchUncaughtException(Unknown Source)
> ===================================================
> java.lang.IllegalStateException: Should NOT be running in the GUI thread.
> at sneer.bricks.hardware.gui.guithread.impl.GuiThreadImpl.assertNotInGuiThread (GuiThreadImpl.java:53)
> at sneer.bricks.hardware.gui.guithread.impl.GuiThreadImpl.invokeLater(GuiThrea dImpl.java:42)
> at sneer.bricks.snapps.system.blinkinglights.gui.impl.BlinkingLightsGuiImpl$Al ertWindowSupport.placeScrollAtTheBegining(BlinkingLightsGuiImpl.java:219)
> at sneer.bricks.snapps.system.blinkinglights.gui.impl.BlinkingLightsGuiImpl$Al ertWindowSupport.show(BlinkingLightsGuiImpl.java:206)
> at sneer.bricks.snapps.system.blinkinglights.gui.impl.BlinkingLightsGuiImpl$Al ertWindowSupport.access$2(BlinkingLightsGuiImpl.java:200)
> at sneer.bricks.snapps.system.blinkinglights.gui.impl.BlinkingLightsGuiImpl$Al ertWindowSupport$3.mouseReleased(BlinkingLightsGuiImpl.java:190)
> at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
> at java.awt.Component.processMouseEvent(Unknown Source)
> at javax.swing.JComponent.processMouseEvent(Unknown Source)
> at java.awt.Component.processEvent(Unknown Source)
> at java.awt.Container.processEvent(Unknown Source)
> at java.awt.Component.dispatchEventImpl(Unknown Source)
> at java.awt.Container.dispatchEventImpl(Unknown Source)
> at java.awt.Component.dispatchEvent(Unknown Source)
> at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
> at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
> at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
> at java.awt.Container.dispatchEventImpl(Unknown Source)
> at java.awt.Window.dispatchEventImpl(Unknown Source)
> at java.awt.Component.dispatchEvent(Unknown Source)
> at java.awt.EventQueue.dispatchEvent(Unknown Source)
> at sneer.bricks.hardware.gui.timebox.impl.TimeboxedEventQueueImpl.access$2(Tim eboxedEventQueueImpl.java:1)
> at sneer.bricks.hardware.gui.timebox.impl.TimeboxedEventQueueImpl.superDispatc hEvent(TimeboxedEventQueueImpl.java:62)
> at sneer.bricks.hardware.gui.timebox.impl.TimeboxedEventQueueImpl.access$0(Tim eboxedEventQueueImpl.java:61)
> at sneer.bricks.hardware.gui.timebox.impl.TimeboxedEventQueueImpl$1.run(Timebo xedEventQueueImpl.java:51)
> at sneer.bricks.hardware.cpu.timebox.impl.TimeboxRunner.tryToRun(TimeboxRunner .java:65)
> at sneer.bricks.hardware.cpu.timebox.impl.TimeboxRunner.<init>(TimeboxRunner.j ava:41)
> at sneer.bricks.hardware.cpu.timebox.impl.TimeboxImpl.run(TimeboxImpl.java:16)
> at sneer.bricks.hardware.cpu.timebox.impl.TimeboxImpl$1.run(TimeboxImpl.java:1 0)
> at sneer.foundation.environments.Environments.runWith(Environments.java:11)
> at sneer.bricks.hardware.gui.timebox.impl.TimeboxedEventQueueImpl.dispatchEven t(TimeboxedEventQueueImpl.java:58)
> at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
> at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
> at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
> at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
> at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
> at java.awt.EventDispatchThread.run(Unknown Source)
> java.lang.IllegalStateException: Thread
> Thread[AWT-EventQueue-2,6,main] is not running in an environment.
> at sneer.foundation.environments.Environments.my(Environments.java:20)
> ===================================================
> at sneer.bricks.snapps.system.log.gui.impl.LogConsoleImpl$WidgetLogger$1.consu me(LogConsoleImpl.java:213)
> at sneer.bricks.snapps.system.log.gui.impl.LogConsoleImpl$WidgetLogger$1.consu me(LogConsoleImpl.java:1)
> at sneer.bricks.pulp.reactive.impl.ReceiversImpl$1.consume(ReceiversImpl.java: 30)
> at sneer.bricks.pulp.events.impl.EventNotifierImpl.notify(EventNotifierImpl.ja va:47)
> at sneer.bricks.pulp.events.impl.EventNotifierImpl.notifyReceivers(EventNotifi erImpl.java:32)
> at sneer.bricks.hardware.io.log.workers.notifier.impl.LogNotifierImpl.notifyEn try(LogNotifierImpl.java:30)
> at sneer.bricks.hardware.io.log.workers.notifier.impl.LogNotifierImpl.access$1 (LogNotifierImpl.java:28)
> at sneer.bricks.hardware.io.log.workers.notifier.impl.LogNotifierImpl$1.log(Lo gNotifierImpl.java:23)
> at sneer.bricks.hardware.io.log.impl.LoggerImpl.log(LoggerImpl.java:30)
> at sneer.bricks.hardware.io.log.exceptions.impl.ExceptionLoggerImpl.uncaughtEx ception(ExceptionLoggerImpl.java:24)
> at java.lang.ThreadGroup.uncaughtException(Unknown Source)
> at java.lang.ThreadGroup.uncaughtException(Unknown Source)
> at java.lang.Thread.dispatchUncaughtException(Unknown Source)
> [2009-07-04 10:27:16] Tuple received: Heartbeat from: Dummy
> [2009-07-04 10:27:18] Tuple published: Heartbeat
> [2009-07-04 10:27:26] Tuple received: Heartbeat from: Dummy
> [2009-07-04 10:27:28] Tuple published: Heartbeat
> [2009-07-04 10:27:36] Tuple received: Heartbeat from: Dummy
> [2009-07-04 10:27:38] Tuple published: Heartbeat