私は嵐コア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を交換した場合、すべてが正常に動作します。 私は瓶を梱包しているうちに、私は嵐 - カフカの人工物のすべての依存関係を梱包しているわけではないと信じています。何が間違っていますか?
'mvn dependency:tree'の結果を共有できますか?トレースがかなり大きいかもしれないので、多分textbinのリンクを提供してください。 – maffo