【问题标题】:Could not find Main class while running Storm Topology运行 Storm Topology 时找不到主类
【发布时间】:2014-02-26 16:12:56
【问题描述】:

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

【问题讨论】:

    标签: java apache-storm


    【解决方案1】:

    对我来说,这是一个类路径问题。一旦我遍历到 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
    

    工作正常。

    【讨论】:

      【解决方案2】:

      storm-starter.jar 的打包可能存在问题:此 jar 不应包含 sl4j 实现。为了打包storm-starter示例(https://github.com/nathanmarz/storm-starter),从根文件夹(存在m2-pom.xml)运行以下命令:

      mvn -f m2-pom.xml package
      

      这应该会在 target/ 文件夹中生成这个文件:

      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
      

      【讨论】:

      • 是的。我在 IntelliJ-IDE 中添加了额外的库。
      【解决方案3】:

      我遇到了类似的暴风雨错误,并且通过添加 pom.xml 中提供的内容得到了修复。当您添加提供时,maven 不会将这些库捆绑到 jar 中。

      【讨论】:

        【解决方案4】:

        尝试像这样运行:

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

        在这里得到答案:Run Jar in Console

        【讨论】:

        • 错错错!你的回答与风暴无关
        • 其实是 storm storm-starter.jar storm.starter.ExclamationTopology test 其中 test 是 Topology 的名称
        猜你喜欢
        • 2015-08-15
        • 1970-01-01
        • 2021-07-25
        • 2020-07-28
        • 1970-01-01
        • 1970-01-01
        • 2019-02-21
        • 2021-12-04
        • 2019-02-16
        相关资源
        最近更新 更多