2

I'm building a little GUI in Swing using Lambdas to quickly assign functions to buttons and I've come across a very strange error. One lambda expression always throws a NullpointerException, but only if I run the jar file(runnable jar) in OS X(Mountain Lion). Under Windows the same file doesn't have any issues.

AbstractAction files = createAction(FileMenu::show); 

AbstractAction nodes = createAction(Clazz.PROC.menu::show); //-> NullpointerException

AbstractAction undo  = createAction(Clazz.PROC.history::undo); 

AbstractAction redo  = createAction(Clazz.PROC.history::redo); 

And I know for a fact that none of the members are actually null because they get instantiated on startup, are never changed and can be accessed from other places in the program just fine at any time. And if I change the syntax in this particular line from

 Clazz.PROC.menu::show       

to

() -> Clazz.PROC.menu.show()  

the NullpointerException under OS X is gone, everything works... Does someone have an idea why the Mac hates the double colon syntax in this particular line so much, while it doesn't have a problem in all the other cases? This is driving me nuts.

Stacktrace:

java.lang.NullPointerException
at pr.BaseFrame$$Lambda$4/1031980531.run(Unknown Source)
at pr.BaseFrame$Action.actionPerformed(BaseFrame.java:264)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6527)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6292)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4883)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:719)
at java.awt.EventQueue$4.run(EventQueue.java:717)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
user1854611
  • 121
  • 8
  • 1
    Can you post the exception stack trace? May or may not be useful, but y'know. – Radiodef May 17 '15 at 22:01
  • 3
    Possible incorrect synchronization; try the first bullet point [here](http://stackoverflow.com/a/30212782/230513); edit your question to include a [complete example](http://stackoverflow.com/help/mcve) that reproduces the problem you describe. – trashgod May 18 '15 at 02:25

0 Answers0