运行Storm Topology时找不到Main类

时间:2014-02-26 16:12:56

标签: java apache-storm

我正在使用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

4 个答案:

答案 0 :(得分:2)

storm-starter.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),您需要告诉storm jar命令包含提供的main()的类的完全限定名称。拓扑定义,像这样(确保使用带有“-with-dependencies”的那个):

usr/local/storm/bin/storm jar storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.ExclamationTopology

答案 1 :(得分:2)

对我来说这是一个类路径问题。一旦我遍历到存在jar的目录,并运行命令一切正常。

从风暴主文件夹

运行
>>> s='+27.5916+086.5640'
>>> s[0:-9]+','+s[-9:]
'+27.5916,+086.5640'

工作得很好。

答案 2 :(得分:0)

我有类似的风暴错误,&它通过添加在pom.xml中提供来修复。当你添加提供时,maven不会将这些lib捆绑到jar中。

答案 3 :(得分:-3)

尝试像这样跑:

java -jar /tmp/storm-starter.jar ExclamationTopology

得到了答案:Run Jar in Console