1

My problem is similar like this question:
Storm command fails with NoClassDefFoundError after adding jsoup as provided dependency

But I want to know the latest solution and better way to solve this.

I will post the same description in storm user mailing list:
Hi all,

I am building a topology with a load of libraries, such as spring, geotools, etc. Right now, I extract each jar files and pack it into one jar, (as suggested by many forums), using maven. The problem here, each jar sometime has conflicting files, so I have to merge manually. Another thing, though I pack my libraries in jar, storm loads its libraries first. For example, I use guava 16, and storm uses guava 13. My program won't work because guava 13 is loaded.

Current solution is I change the clojure script to put my jar first in the classpath before other jars. Or, I put my jars in lib/ directory.

Is there any simple and reliable way to include jar in Storm? Sorry if this email is too long. I want to make myself clear.

Community
  • 1
  • 1
javar.h
  • 21
  • 1

1 Answers1

0

You can use the maven-shade-plugin instead of the maven-assembly-plugin to build your uber-jar. Then, use the relocation feature to move classes into a different package.

Kit Menke
  • 7,046
  • 1
  • 32
  • 54