Storm Topology not submit

风流意气都作罢 提交于 2019-12-04 10:54:14

I used cassandra and cassandra-all version 1.6.1 declares both log4j and slf4j-log4j12 as compile-time dependencies so I add following dependencies and my topology work like charm !!!

<dependencies>
<dependency>
<groupId> org.apache.cassandra</groupId>
<artifactId>cassandra-all</artifactId>
<version>1.1.6</version>

<exclusions>
  <exclusion> 
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
  </exclusion>
  <exclusion> 
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
  </exclusion>
</exclusions> 

</dependency>
</dependencies>

Try to exclude either log4j-over-slf4j.jar or slf4j-log4j12.jar from your classpath. I don't know which build tool do you use. Check the documentation of your build tool to see how to exclude a dependency.

For more reference: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError

Daniel Epstein

You have to exclude all occurrences of slf4j-log4j12.jar . . . It doesn't work if you exclude all occurrences of log4j-over-slf4j.jar because Apache Storm adds log4j-over-slf4j at runtime (through the storm-core dependency in your pom.xml). Even when I added exclude log4j-over-slf4j to the storm-core dependency it would still be brought back at runtime.

If after exclude either log4j-over-slf4j.jar or slf4j-log4j12.jar , you still got this error. See in your jar, if both these two classes exist: org.slf4j.impl.log4jloggerfactory and org.apache.log4j.log4jloggerfactory . And then find if any other jars besides slf4j and log4j contains these two classes. In my situation, there is org.slf4j.impl.log4jloggerfactory in activemq. The error log really mislead me for a long time.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!