This bug seems to pop up whenever a strategy uses an enum defined in an external library, as a type for one of its parameters.
From the Java console:
24.04.2012 12:16:46.400 SEVERE preset.a ] isak.odds.userDefinedEnum
java.lang.ClassNotFoundException: isak.odds.userDefinedEnum
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.strategy.tab.preset.a.g(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.strategy.tab.toolbar.StrategiesToolbar.k(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.strategy.tab.toolbar.StrategiesToolbar.a(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.strategy.tab.toolbar.StrategiesToolbar.a(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.strategy.tab.toolbar.StrategiesToolbar.a(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.strategy.tab.toolbar.p.actionPerformed(Unknown Source)
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.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
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.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
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)
24.04.2012 12:16:46.415 SEVERE a.c ] Uncaught exception in [AWT-EventQueue-0] thread: null
java.lang.NullPointerException
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at com.dukascopy.dds2.greed.util.k.a(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.strategy.tab.preset.StrategyPresetsDialog.VN(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.strategy.tab.preset.StrategyPresetsDialog.<init>(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.strategy.tab.toolbar.StrategiesToolbar.a(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.strategy.tab.toolbar.StrategiesToolbar.a(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.strategy.tab.toolbar.StrategiesToolbar.a(Unknown Source)
at com.dukascopy.dds2.greed.gui.component.strategy.tab.toolbar.p.actionPerformed(Unknown Source)
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.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
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.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
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)
HOW TO REPRODUCE THIS BUG1. Create an external library (e.g. in Netbeans) with a user-defined enum, for example
Attachment:
userDefinedEnum.java [233 Bytes]
Downloaded 300 times
2. Compile a strategy that uses it, for example
Attachment:
extEnumBugProducer.java [1.22 KiB]
Downloaded 309 times
3. Open the "Strategies" tab, select the strategy, start it and in the Parameters dialog box adjust some parameters and save as a new preset before clicking "Run".
4. After running for some seconds, stop the strategy.
5. If you start it again, the exception at the top of this post will be thrown.
FURTHER INFORMATIONThe above is just a simple contrived procedure to induce the exception, but there are many other situations in which this exception is also thrown. Of its various consequences, these come to mind now:
- requiring a platform restart every time certain strategies are started
- rendering strategy parameter presets inaccessible, so that presets have to be set up from scratch every time
Some months ago, this bug did not exist.