The following errors were obtained on Ubuntu Linux 14.04.4 LTS.
$ ./drake-distro/build/install/bin/lcm-spy
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/IAxis
jar: /home/liang/dev/drake-distro-2/build/install/bin/../share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel$4.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/ITrace2D
jar: /home/liang/dev/drake-distro-2/build/install/bin/../share/java/lcm.jar
class: lcm/spy/ObjectPanel.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/IAxis
jar: /home/liang/dev/drake-distro-2/build/install/bin/../share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel$MyMouseWheelListener.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/IAxis
jar: /home/liang/dev/drake-distro-2/build/install/bin/../share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel$5.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/axis/AAxis
jar: /home/liang/dev/drake-distro-2/build/install/bin/../share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel$3.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/ZoomableChart
jar: /home/liang/dev/drake-distro-2/build/install/bin/../share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/IAxis
jar: /home/liang/dev/drake-distro-2/build/install/bin/../share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel$2.class
Found 0 LCM types
LCM: Disabling IPV6 support
LCM: TTL set to zero, traffic will not leave localhost.
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/ZoomableChart
jar: /home/liang/dev/drake-distro-2/build/install/bin/../share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel.class
Found 0 plugins
$ ./drake-distro/build/install/bin/bot-spy
Checking /home/liang/dev/drake-distro-2/build/install/share/java
Found /home/liang/dev/drake-distro-2/build/install/share/java/lcmtypes_bot2-core.jar
Found /home/liang/dev/drake-distro-2/build/install/share/java/lcmtypes_bot2-param.jar
Found /home/liang/dev/drake-distro-2/build/install/share/java/lcmtypes_bot2-procman.jar
Found /home/liang/dev/drake-distro-2/build/install/share/java/lcmtypes_drake.jar
Found /home/liang/dev/drake-distro-2/build/install/share/java/lcmspy_plugins_bot2.jar
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/IAxis
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel$4.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/ITrace2D
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ObjectPanel.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/IAxis
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel$MyMouseWheelListener.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/IAxis
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel$5.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/axis/AAxis
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel$3.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/ZoomableChart
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/IAxis
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel$2.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/IAxis
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel$4.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/ITrace2D
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ObjectPanel.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/IAxis
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel$MyMouseWheelListener.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/IAxis
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel$5.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/axis/AAxis
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel$3.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/ZoomableChart
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/IAxis
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel$2.class
Found 75 LCM types
LCM: Disabling IPV6 support
LCM: TTL set to zero, traffic will not leave localhost.
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/ZoomableChart
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel.class
ClassDiscoverer: java.lang.NoClassDefFoundError: info/monitorenter/gui/chart/ZoomableChart
jar: /home/liang/dev/drake-distro-2/build/install/share/java/lcm.jar
class: lcm/spy/ZoomableChartScrollWheel.class
Found 4 plugins
bot2_spy.ImagePlugin@4fc09423
bot2_spy.PlanarLidarPlugin@6c3daebc
bot2_spy.ImagePlugin@459af028
bot2_spy.PlanarLidarPlugin@3f0cf5cb
The error message mentions packages named "info/monitorenter/gui". This appears to be part of JChart2d.
Searching in drake-distro, I see that JChart2d exists:
$ cd drake-distro
$ find . -name "*.jar" | grep jchart2d*
./externals/lcm/lcm-java/jchart2d-code/ext/xmlgraphics-commons-1.3.1.jar
./externals/lcm/lcm-java/jchart2d-code/ext/build/profile.jar
./externals/lcm/lcm-java/jchart2d-code/ext/build/junit-4.8.1.jar
./externals/lcm/lcm-java/jchart2d-code/ext/build/jipViewer.jar
./externals/lcm/lcm-java/jchart2d-code/ext/build/proguard-4.5.1.jar
./externals/lcm/lcm-java/jchart2d-code/ext/jide-oss-2.9.7.jar
./externals/lcm/lcm-java/jchart2d-code/doc/lib/jchart2d-applet.jar
./build/externals/lcm/lcm-java/jchart2d-code/jchart2d-3.2.2.jar
./build/install/share/java/jchart2d-3.2.2.jar
Thus, maybe there's a problem with the CLASSPATH?
16.04 fails in a similar fashion.
Do these tools still work for _anyone_? If not, seems like much worse that "medium" priority.
I am also seeing this errors, and unable to run the spy tool.
Adding more jars to my classpath seems to be a work-around:
java -server -Djava.net.preferIPv4Stack=true -Xincgc -Xmx128m -Xms64m -ea -cp `ls build/install/share/java/*.jar | xargs echo | perl -pe 's# #:#g;'` lcm.spy.Spy &
Thanks for the workaround! I was using a months old clone of Drake (one prior to placing the build in drake-distro/build) to launch bot-spy.
This is really fairly annoying. I'm going to work around it in my one shell script, but really we should get bot-spy working again. @david-german-tri can you escalate to kitware?
I've added some hack-arounds. Be sure to grep for this issue number and remove them, concurrently with fixing this issue.
@jwnimmer-tri Would you mind sharing your workaround (is it the bot_spy_that_actually_works?)? This is currently blocking for us as we move up
@wxmerkt Sure (and yes)!
Here is the bash version that we were using for a while:
function bot_spy_that_actually_works {
JAR_DIR=${DRAKE_DIST_BUILD}/install/share/java
CLASSPATH=$(echo ${JAR_DIR}/*.jar | sed -e 's# #:#g'):${CLASSPATH}
java -cp "${CLASSPATH}" lcm.spy.Spy
}
Since then we've ported it to python instead:
https://github.com/RobotLocomotion/drake/blob/46cadd78d390f985bfcf5b0ec87ee0fdda54c4ae/drake/automotive/automotive_demo.py#L143
@liangfok This is high priority, but apparently not getting any attention. I just re-tested and it's still broken. Should we reassign this to @mwoehlke-kitware or are you working on it?
I haven't started to work on it yet. I'll go ahead and assign it to @mwoehlke-kitware.
My guess is this is blocked / fixed by lcm-proj/lcm#143 and corresponding changes to libbot which I believe @wxmerkt was working on...
I've tested your fixes and fed back that they didn't work including output for both CMake-LCM and Autoconf-LCM(v1.3-lts), cf. https://github.com/lcm-proj/lcm/pull/143#issuecomment-259695016. I'm not working on it/not blocking it. As far as I can tell it, @patmarion's hunch in https://github.com/lcm-proj/lcm/pull/143#issuecomment-259506700 might have identified the issue that's causing this problem (i.e. dependent jars not being embedded?).
@mwoehlke-kitware I agree that finishing that PR is the answer (and then just bumping Drake's sha). Could I ask you to help push it through to a resolution?
Has there been any progress on this? Being able to run a bot-spy to inspect LCM traffic is a very basic and necessary functionality if you want to use Drake on an actual robot. I think it will end up being blocking for lots of people, or they will all have to implement this workaround. I have implemented the workaround for the moment but I am hoping this can be fixed in master soon.
I bumped up Drake's LCM sha recently. It's possible that everything just works now. @liangfok do you want to retest and report back?
I built drake master yesterday and it still didn't work. The bot-spy launches but you aren't able to actually inspect the messages.
@mwoehlke-kitware, sounds like the ball is still in your court on this one.
See RobotLocomotion/libbot2#2