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ā€‹

Reply via email to