Apache storm 由于多个log4j文件,Storm拓扑未提交

Apache storm 由于多个log4j文件,Storm拓扑未提交,apache-storm,Apache Storm,由于多个log4j错误,Storm拓扑提交失败 在本地日食中,它工作正常。但在Storm集群中提交拓扑时,拓扑提交失败 我使用的是Storm版本1.1.1和kafka_2.9.2(0.8.1.1)。如何在eclipse中通过maven找到来自JAR的log4j文件 <dependency> <groupId>org.apache.storm</groupId> <artifactId>

由于多个log4j错误,Storm拓扑提交失败

在本地日食中,它工作正常。但在Storm集群中提交拓扑时,拓扑提交失败

我使用的是Storm版本1.1.1和kafka_2.9.2(0.8.1.1)。如何在eclipse中通过maven找到来自JAR的log4j文件

         <dependency>
            <groupId>org.apache.storm</groupId>
            <artifactId>storm-core</artifactId>
            <version>1.1.1</version>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <artifactId>log4j-over-slf4j</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
                 <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>logback-classic</groupId>
                    <artifactId>ch.qos.logback</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
     <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka_2.9.2</artifactId>
        <version>0.8.1.1</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

org.apache.storm
风暴核心
1.1.1
假如
log4j-over-slf4j
org.slf4j
org.slf4j
slf4j api
回归经典
回写
org.apache.kafka
卡夫卡2.9.2
0.8.1.1
org.apache.zookeeper
动物园管理员
log4j
log4j
错误日志:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/apache-storm-1.0.1/lib/log4j-slf4j-impl-2.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apps/project/demo/app/demo-app.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Exception in thread "main" java.lang.IllegalAccessError: tried to access method org.apache.logging.log4j.core.lookup.MapLookup.newMap(I)Ljava/util/HashMap; from class org.apache.logging.log4j.core.lookup.MainMapLookup
        at org.apache.logging.log4j.core.lookup.MainMapLookup.<clinit>(MainMapLookup.java:37)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.apache.logging.log4j.core.util.ReflectionUtil.instantiate(ReflectionUtil.java:185)
        at org.apache.logging.log4j.core.lookup.Interpolator.<init>(Interpolator.java:65)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:346)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:161)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:359)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:420)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:138)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:147)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:41)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:175)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:102)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:43)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:42)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
        at org.apache.log4j.Category.<init>(Category.java:56)
        at org.apache.log4j.Logger.<init>(Logger.java:35)
        at org.apache.log4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:59)
        at org.apache.log4j.Logger.getLogger(Logger.java:39)
        at org.apache.log4j.Logger.getLogger(Logger.java:43)
        at com.demo.apps.my.topology.BaseTopology.<clinit>(BaseTopology.java:19)
SLF4J:类路径包含多个SLF4J绑定。
SLF4J:在[jar:file:/opt/apache-storm-1.0.1/lib/log4j-SLF4J-impl-2.1.jar!/org/SLF4J/impl/StaticLoggerBinder.class]中找到绑定
SLF4J:在[jar:file:/opt/apps/project/demo/app/demo-app.jar!/org/SLF4J/impl/StaticLoggerBinder.class]中找到绑定
SLF4J:参见http://www.slf4j.org/codes.html#multiple_bindings 我需要一个解释。
SLF4J:实际绑定的类型为[org.apache.logging.SLF4J.Log4jLoggerFactory]
线程“main”java.lang.IllegalAccessError中出现异常:试图访问方法org.apache.logging.log4j.core.lookup.MapLookup.newMap(I)Ljava/util/HashMap;来自类org.apache.logging.log4j.core.lookup.MainMapLookup
位于org.apache.logging.log4j.core.lookup.mainmapplookup。(mainmapplookup.java:37)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
位于org.apache.logging.log4j.core.util.ReflectionUtil.instantiate(ReflectionUtil.java:185)
位于org.apache.logging.log4j.core.lookup.Interpolator.(Interpolator.java:65)
位于org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:346)
位于org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:161)
位于org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:359)
位于org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:420)
位于org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:138)
位于org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:147)
位于org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:41)
位于org.apache.logging.log4j.LogManager.getContext(LogManager.java:175)
位于org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:102)
位于org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:43)
位于org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:42)
位于org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
位于org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
位于org.apache.log4j.Category(Category.java:56)
在org.apache.log4j.Logger上(Logger.java:35)
位于org.apache.log4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:59)
位于org.apache.log4j.Logger.getLogger(Logger.java:39)
位于org.apache.log4j.Logger.getLogger(Logger.java:43)
在com.demo.apps.my.topology.BaseTopology.(BaseTopology.java:19)

在eclipse中,在
依赖层次结构视图中,过滤log4j、slf4j jars

观察到其他一些依赖jar也有log4j slf4j jar

排除所有重复JAR后,重新构建应用程序

现在没有找到重复的JAR,并且能够提交拓扑

因此,检查Maven
依赖层次结构
查看并删除重复的jar