Brent created ZOOKEEPER-3943:
--------------------------------
Summary: Zookeeper Inspector throwing NullPointerExceptions and
not displaying properly
Key: ZOOKEEPER-3943
URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3943
Project: ZooKeeper
Issue Type: Bug
Components: contrib
Affects Versions: 3.6.2, 3.7.0
Reporter: Brent
Attachments: zoo-inspector-broken.png, zoo-inspector-working.png
I tried a number of different ways to get Zookeeper Inspector running
yesterday, but repeatedly ran into the same issue. The Java Swing window will
launch, but in an incomplete state (see attached images for broken and working
views) and the corresponding console shows this stack trace repeatedly:
{code:java}
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerExceptionException
in thread "AWT-EventQueue-0" java.lang.NullPointerException at
javax.swing.GrayFilter.createDisabledImage(GrayFilter.java:49) at
javax.swing.LookAndFeel.getDisabledIcon(LookAndFeel.java:557) at
javax.swing.AbstractButton.getDisabledIcon(AbstractButton.java:653) at
com.apple.laf.AquaButtonUI.paintIcon(AquaButtonUI.java:363) at
com.apple.laf.AquaButtonUI.paint(AquaButtonUI.java:304) at
javax.swing.plaf.ComponentUI.update(ComponentUI.java:161) at
javax.swing.JComponent.paintComponent(JComponent.java:780) at
javax.swing.JComponent.paint(JComponent.java:1056) at
javax.swing.JComponent.paintChildren(JComponent.java:889) at
javax.swing.JComponent.paint(JComponent.java:1065) at
javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) at
javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502) at
javax.swing.RepaintManager.paint(RepaintManager.java:1272) at
javax.swing.JComponent._paintImmediately(JComponent.java:5158) at
javax.swing.JComponent.paintImmediately(JComponent.java:4969) at
javax.swing.RepaintManager$4.run(RepaintManager.java:831) at
javax.swing.RepaintManager$4.run(RepaintManager.java:814) at
java.security.AccessController.doPrivileged(Native Method) at
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) at
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) at
javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) at
javax.swing.RepaintManager.access$1200(RepaintManager.java:64) at
javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) at
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at
java.awt.EventQueue.access$500(EventQueue.java:97) at
java.awt.EventQueue$3.run(EventQueue.java:709) at
java.awt.EventQueue$3.run(EventQueue.java:703) at
java.security.AccessController.doPrivileged(Native Method) at
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
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){code}
{{I was able to narrow this down to the icons in the
*zookeeper/zookeeper-contrib/zookeeper-contrib-zooinspector/src/main/resources/icons*
folder not making it into the built JAR for the subproject and being unable to
be found dynamically in most scenarios. I tried running from a number of
different directories and messing with my classpath, but it didn't seem
consistent and the *zooInspector.sh* script would not work either.}}
{{I found that if I added this to
}}{{*zookeeper/zookeeper-contrib/zookeeper-contrib-zooinspector/pom.xml*, the
tool will display and run correctly (this forces the resources folder to get
packed into the built JAR): }}{{}}
{code:java}
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
</build>{code}
As far as I can tell, this issue still exists on the master branch and in
release 3.6.2.
Is this something that I could help by contributing a PR for?
I might also suggest leveraging *maven-assembly-plugin* for this particular
project to build one single "fat jar" that includes all the required
dependencies so there's only a single jar necessary to make Zookeeper Inspector
run if no one has a major issue with that.
Either way, happy to help, just let me know.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)