Hi all,

I am having an issue with deploying a topology in Storm 2.0.0. The issue 
involves Guava. I was building a Storm fat jar with Guava 18.0 and began 
getting this error when I submitted my topology:



INFO  c.d.d.c.GuavaCompatibility - Detected Guava < 19 in the classpath, using 
legacy compatibility layer

INFO  c.d.d.c.Native - Could not load JNR C Library, native system calls 
through this library will not be available.

INFO  c.d.d.c.ClockFactory - Using java.lang.System clock to generate 
timestamps.

ERROR MyClassName – my logged error:

java.lang.NoSuchMethodError: 
com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor()Lcom/google/common/util/concurrent/ListeningExecutorService;

\tat 
com.datastax.driver.core.GuavaCompatibility$Version18OrLower.sameThreadExecutor(GuavaCompatibility.java:185)



I upgraded Guava to 19.0 and made sure to exclude all versions of Guava that 
were not 19.0 and started getting this error (it’s the same error):



INFO  c.d.d.c.GuavaCompatibility - Detected Guava < 19 in the classpath, using 
legacy compatibility layer

INFO  c.d.d.c.Native - Could not load JNR C Library, native system calls 
through this library will not be.\

INFO  c.d.d.c.ClockFactory - Using java.lang.System clock to generate 
timestamps.

ERROR MyClassName – my logged error:

java.lang.NoSuchMethodError: 
com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor()Lcom/google/common/util/concurrent/ListeningExecutorService;\n\tat
 
com.datastax.driver.core.GuavaCompatibility$Version18OrLower.sameThreadExecutor(GuavaCompatibility.java:185)



I was very confused by this as I did not have any jars of Guava < 19.0 included 
at all (I checked very thoroughly). Lastly, I tried removing all Guava 
inclusions and I got the following error:



INFO  c.d.d.c.GuavaCompatibility - Detected Guava < 19 in the classpath, using 
legacy compatibility layer

ERROR MyClassName – my logged error:

java.lang.NoClassDefFoundError: com/google/common/util/concurrent/FutureFallback

\tat 
com.datastax.driver.core.GuavaCompatibility.selectImplementation(GuavaCompatibility.java:136)



I am very confused as to how this is detecting a version of Guava when there 
are none included in the jar. When submitting a topology to storm, does it add 
in dependency or package in libs? I need to use Guava 19.0 as one of my 
dependencies relies on it. How can I make sure that 19.0 is the only version 
being used and that Storm 2.0 does not add any versions of Guava?



Thanks

Reply via email to