Ubuntu Apache Storm jar Error: Could not find or load main class storm.starter

Ubuntu Apache Storm jar Error: Could not find or load main class storm.starter

我正在关注 https://github.com/apache/storm/tree/master/examples/storm-starter。我在我的 VMWare 上使用 Ubuntu 14.04 LTS。

我可以 运行 mvn exec:java -D storm.topology=storm.starter.RollingTopWords/home/user/storm/examples/storm-starter目录下顺利没有问题。但是我不能在 Apache Storm 中 运行 它。

我的 storm-starter-topologies-0.9.3.jar 在我的 /home/user/storm/examples/storm-starter 目录中。 我还有 storm-starter-0.9.3.jar & storm-starter-0.9.3-jar-with-dependencies.jar 在我的 /home/user/storm/examples/storm-starter/target 目录中。

以下是我之前在 /home/user/storm/bin 目录中尝试的命令:

./storm jar storm-starter-*.jar storm.starter.RollingTopWords

./storm jar storm-starter-0.9.3-jar-with-dependencies.jar storm.starter.RollingTopWords

./storm jar storm-starter-jar-with-dependencies.jar storm.starter.RollingTopWords

./storm jar storm-starter-topologies-0.9.3.jar storm.starter.RollingTopWords

拓扑名称:

./storm jar storm-starter-0.9.3-jar-with-dependencies.jar storm.starter.RollingTopWords slidingWindowCounts

./storm jar storm-starter-jar-with-dependencies.jar storm.starter.RollingTopWords slidingWindowCounts

./storm jar storm-starter-topologies-0.9.3.jar storm.starter.RollingTopWords slidingWindowCounts 

./storm jar storm-starter-0.9.3-jar storm.starter.RollingTopWords slidingWindowCounts 

所有人都以同样的错误结束: 错误:找不到或无法加载 main class storm.starter.RollingTopWords .

我所有的class都在/home/user/storm/examples/storm-starter/target/classes/storm/starter目录 RollingTopWords.class 存在于该目录中。

我该如何解决这个问题?详细的解决方案将有所帮助。

试试这个,假设你在 storm 根文件夹中,即你的情况 (/home/user/storm/bin)

 storm jar /path/to/storm-starter-*.jar storm.starter.RollingTopWords <topology-name> remote

/path/to/storm-starter-*.jar 应替换为系统中的实际路径。 这里基本上 <topology-name>remote 参数是提供给 storm.

的两个参数(可选)

如果你只是 运行(不带参数)

    storm jar /path/to/storm-starter-*.jar storm.starter.RollingTopWords

它将假定拓扑名称为 slidingWindowCounts 您可以通过将 <topology-name> 替换为任何有效字符串来更改您选择的任何名称。
最后一个参数 remote 告诉风暴在集群中 运行 这个,如果你不提供这个参数,它将 运行 在本地模式下。

请记住参数是特定于此特定拓扑的,对其他拓扑无效。查看 RollingTopWords topology 你会发现它完全取决于开发人员配置你的代码以接受外部参数或通过硬编码。

问题已解决。出现问题是因为风暴 jar 在不正确的目录中 运行。它应该是 /home/user/storm/examples/storm-starter/target 目录中的 运行,因为我的 storm-starter-0.9.3-jar-with-dependencies.jar 在该目录中。