2016-12-30 3 views
1

私は嵐コア1.0.2とカフカ-注ぎ口1.0.2を使用してLocalCluster嵐を実行しようとしています。ストーム・カフカ:java.lang.NoClassDefFoundErrorが:COM /グーグル/共通/ベース/弦楽器

マイポンポンファイルは、私がローカルに嵐のクラスタを実行するには、次のコマンドを使用し

<dependencies> 
    <!-- Storm Dependency --> 
    <dependency> 
     <groupId>org.apache.storm</groupId> 
     <artifactId>storm-core</artifactId> 
     <version>1.0.2</version> 
     <scope>provided</scope> 
    </dependency> 

    <!-- Storm Kafka Dependency --> 
    <dependency> 
     <groupId>org.apache.storm</groupId> 
     <artifactId>storm-kafka</artifactId> 
     <version>1.0.2</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.apache.zookeeper</groupId> 
       <artifactId>zookeeper</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>log4j</groupId> 
       <artifactId>log4j</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
..... 
</dependencies> 
<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
     </resource> 
    </resources> 
    <plugins> 

     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
       <archive> 
        <manifest> 
         <mainClass>com.walmartlabs.midas.storm.Topology</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.2.1</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>exec</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <executable>java</executable> 
       <includeProjectDependencies>true</includeProjectDependencies> 
       <includePluginDependencies>false</includePluginDependencies> 
       <classpathScope>compile</classpathScope> 
       <mainClass>${storm.topology}</mainClass> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

以下のように見えます。

mvn package 
storm jar target/myproject-0.1-SNAPSHOT-jar-with-dependencies.jar com.company.project.storm.Topology 

私は例外

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/base/Strings 
    at org.apache.storm.kafka.KafkaSpout.declareOutputFields(KafkaSpout.java:184) 
    at org.apache.storm.topology.TopologyBuilder.getComponentCommon(TopologyBuilder.java:431) 
    at org.apache.storm.topology.TopologyBuilder.createTopology(TopologyBuilder.java:135) 
    at com.walmartlabs.midas.storm.Topology.submitLocalTopology(Topology.java:50) 
    at com.walmartlabs.midas.storm.Topology.main(Topology.java:75) 
Caused by: java.lang.ClassNotFoundException: com.google.common.base.Strings 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 

次のGoogleの一般的な依存関係が嵐・カフカのアーティファクトのものになってしまいます。そして私はstorm-kafkaのスコープをデフォルトとして設定しています。その依存関係はすべて私のjarファイルで構築する必要があります。

私はいくつかのファイルを読んでいる簡単な注ぎ口とKafkaSpoutを交換した場合、すべてが正常に動作します。 私は瓶を梱包しているうちに、私は嵐 - カフカの人工物のすべての依存関係を梱包しているわけではないと信じています。何が間違っていますか?

+0

'mvn dependency:tree'の結果を共有できますか?トレースがかなり大きいかもしれないので、多分textbinのリンクを提供してください。 – maffo

答えて

0

私は以下のような依存関係(ps:guava.jar のバージョンは16.0.1がstorm1.0.3で使用されています)を追加することでうんざりしています。ちなみに、storm-スターター。

 <dependency> 
      <groupId>com.google.guava</groupId> 
      <artifactId>guava</artifactId> 
      <version>${guava.version}</version> 
      <!--<version>16.0.1</version>--> 
     </dependency> 
関連する問題