我正在使用storm jar
类向‘`nimbus’提交拓扑。它在本地运行良好,但在远程集群上,它说它无法加载主类。下面是错误
stderr: SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/storm-0.9.0.1/lib/logback-classic-1.0.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/tmp/storm-starter.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Error: Could not find or load main class ExclamationTopology
我在CLI上运行以下命令:
usr/local/storm/bin/storm jar /tmp/storm-starter.jar ExclamationTopology
发布于 2016-03-02 15:59:53
对我来说,这是一个类路径问题。一旦我遍历到jar所在的目录,并运行该命令,一切都很正常。
从storm主文件夹运行
./bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.3.jar storm.starter.WordCountTopology TOne
Failed with error: Error: Could not find or load main class storm.starter.WordCountTopology
Running from directory examples/storm-starter
/root/storm/apache-storm-0.10.0/bin/storm jar storm-starter-topologies-0.10.0.jar storm.starter.WordCountTopology TOne
工作得很好。
发布于 2014-02-27 01:56:44
jar的打包可能有问题:这个jar不应该包含sl4j实现。要打包storm-starter示例(https://github.com/nathanmarz/storm-starter),请从根文件夹(其中包含m2-pom.xml )运行以下命令:
mvn -f m2-pom.xml package
这将在目标/文件夹中生成以下文件:
storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar
然后,为了将其部署到集群(实际上是通过Nimbus),您需要将包含提供拓扑定义的main()
的类的完全限定名告知storm jar
命令,如下所示(请确保使用带有“- with -main()
”的依赖项):
usr/local/storm/bin/storm jar storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.ExclamationTopology
发布于 2014-03-11 16:01:48
我在storm中也遇到过类似的错误,通过添加pom.xml中提供的内容修复了这个错误。如果提供了u add,maven不会将这些库捆绑到jar中。
https://stackoverflow.com/questions/22046988
复制相似问题