Hi,
I've been trying to upgrade to Storm 0.10.0 version. While it worked great
in 0.9.5, the uber-jar is now failing.
I'm using such dependencies :
<dependency>
<groupId>com.optimaize.languagedetector</groupId>
<artifactId>language-detector</artifactId>
<version>0.5</version>
</dependency>
Which uses guava 16.0.1 under the hood.
And I'm building the uber-jar like so :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer"
>
<resource>core-site.xml</resource>
<file>src/main/resources/core-site.xml</file>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer"
>
<resource>hdfs-site.xml</resource>
<file>src/main/resources/hdfs-site.xml</file>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer"
>
<resource>ant-parsefilters.json</resource>
<file>src/main/resources/my-parsefilters.json</file>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer"
>
<resource>ant-urlfilters.json</resource>
<file>src/main/resources/my-urlfilters.json</file>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"
/>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"
>
<mainClass>com....</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
Whatever combination of dependencies on guava I try :
- Specify it as a dependency on its own;
- exclude it from the lang-detector dependency, ...
I always end with an issue while initializing this component :
java.lang.NoSuchMethodError:
com.google.common.base.Splitter.splitToList(Ljava/lang/CharSequence;)Ljava/util/List;
at com.optimaize.langdetect.i18n.LdLocale.fromString(LdLocale.java:77) at
com.optimaize.langdetect.profiles.BuiltInLanguages.<clinit>(BuiltInLanguages.java:21)
at
com.optimaize.langdetect.profiles.LanguageProfileReader.readAllBuiltIn(LanguageProfileReader.java:118)
at com....ml.LangClassifier.<init>(LangClassifier.java:31) at
com....bigdata.storm.bolts.LangBolt.prepare(LangBolt.java:83) at
backtype.storm.daemon.executor$fn__5694$fn__5707.invoke(executor.clj:757)
at backtype.storm.util$async_loop$fn__545.invoke(util.clj:477) at
clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:745)
I really can't understand how to pack the dependencies in the uber-jar so
that it is resolved. I've noticed several tickets about this. Thought I
haven't found how to handle this issue.
Does anybody knows the correct way to handle this ?
--
BR,
Aurelie
ānā