Apache Storm - 风暴启动器上的 ClassNotFoundException

Apache Storm - ClassNotFoundException on storm-starter

我正在尝试让 storm-starter 正常工作。我尝试了邮件列表,但它似乎并没有获得关注。当我 运行 以下内容时:

$ mvn compile exec:java -Dstorm.topology=storm.starter.ExclamationTopology

我得到一个 error:

Error on initialization of server mk-worker
java.lang.RuntimeException: java.lang.ClassNotFoundException: backtype.storm.testing.TestWordSpout

我不是 java 开发人员,所以我不确定导入应该如何工作。我确实看到 storm-core/src/jvm/backtype/storm/testing/TestWordSpout.java

当我找到任何 jar 文件时,我看到:

./target/original-storm-starter-0.11.0-SNAPSHOT.jar
./target/storm-starter-0.11.0-SNAPSHOT.jar

当我检查那些 jar 文件时,TestWordSpout 不存在。根据上面链接的文档,我 运行 从 ./examples/storm-starter 执行我的命令。

据我所知,我已完全按照教程进行操作。 OSX El Capitan 10.11.2,Java 1.8.0,Storm 0.9.5,Maven 3.3.3。任何帮助都会很棒;我很高兴能够开始:)

运行 通过 Maven 的 Storm Topology 不是可行的方法。您应该在命令行上使用 bin/storm jar myJarFile.jar 将拓扑提交到集群(这也适用于本地模式)。

文件 ./target/original-storm-starter-0.11.0-SNAPSHOT.jar./target/storm-starter-0.11.0-SNAPSHOT.jar 是标准的 Maven 工件,不能用于将拓扑提交到集群。

您可以使用 maven-jar-plugin(我建议您开始使用 - 您可能需要使用 maven-dependency-plugin, too),maven-assembly-plugin, ormaven-shade-pluginto assembly a correctjar` 文件提交。关于这个有很多 SO 问题,所以我不会在这里包含更多细节。例如,您可以查看我的 git 存储库 https://github.com/mjsax/aeolus/blob/master/monitoring/pom.xml