[
https://issues.apache.org/jira/browse/ZOOKEEPER-3943?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17244372#comment-17244372
]
Brent commented on ZOOKEEPER-3943:
----------------------------------
A pull request has been submitted:
https://github.com/apache/zookeeper/pull/1551
> 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.7.0, 3.6.2
> Reporter: Brent
> Priority: Major
> Labels: pull-request-available
> Attachments: zoo-inspector-broken.png, zoo-inspector-working.png
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> 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)