Running Lumbermill on OS X 10.6 Snow Leopard
Running Lumbermill on OS X 10.6 Snow Leopard
Lumbermill
is a log viewer that useful when you need to view and filter large quantities of java.util.loggingor Log4J logging that uses the SocketAppender. Unfortunately, Lumbermill stopped working on OS X after the Snow Leopard upgrade. Here's how to get it working again.
Symptoms
If you start Lumbermill normally, with *java -jar dist/lib/lumbermill.jar* then there is a problem after you select theNew Server Mill menu option, and enter a port number under _Please enter the port to listen on_
image:../media/2010-02-23-running-lumbermill-os-x-106-snow-leopard/lumbermill-1.png[Lumbermill - attempting to create a New Server Mill]
… the window doesn't open - nothing happens. Instead of opening the log output window, Lumbermill silently fails with the following NullPointerException (NPE):
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.traxel.lumbermill.desk.MillFrameControl.<init>(MillFrameControl.java:98)
at com.traxel.lumbermill.Mill.<init>(Mill.java:44)
at com.traxel.lumbermill.ServerMill.<init>(ServerMill.java:42)
at com.traxel.lumbermill.desk.MillAction$ServerMillAction.getMill(MillAction.java:54)
at com.traxel.lumbermill.desk.MillAction.actionPerformed(MillAction.java:131)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:389)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223)
at com.apple.laf.AquaMenuItemUI.doClick(AquaMenuItemUI.java:137)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1264)
at java.awt.Component.processMouseEvent(Component.java:6348)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
at java.awt.Component.processEvent(Component.java:6113)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4714)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
at java.awt.Container.dispatchEventImpl(Container.java:2129)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
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)
Cause
The problem is that Lumbermill tries to use the Aqua look and feel for Swing, which does not exist any more in the version of Java shipped with Snow Leopard. This because Aqua is 32-bit code and does not run on the 64-bit Snow Leopard Java runtime.
Solution
The solution is to specify a different Swing look and feel, by setting the swing.defaultlaf system property on the command line:
*java -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel -jar dist/lib/lumbermill.jar*
This starts Lumbermill with Swing's 'Metal' look and feel, and the server mill window now opens normally.