I'm getting java.lang.IncompatibleClassChangeError when using slf4j.Marker. It seems I have several slf4j versions in classpath. But when executing maven dependency:tree it says there is only slf4j 1.7.25. Do you guys have any ideas what might be the problem? The dependencies are as follows:
The app is deployed on WildFlly 8.2.1 AS.
> -ERROR in net.logstash.logback.appender.LogstashTcpSocketAppender[stash] - Unable to process event: Class net.logstash.logback.marker.ObjectAppendingMarker does not implement the requested interface org.slf4j.Marker java.lang.IncompatibleClassChangeError: Class net.logstash.logback.marker.ObjectAppendingMarker does not implement the requested interface org.slf4j.Marker
>
> 2018-03-31 00:17:03,287 INFO [stdout] (logback-appender-stash-127.0.0.1:4560-2) at java.lang.IncompatibleClassChangeError: Class net.logstash.logback.marker.ObjectAppendingMarker does not implement the requested interface org.slf4j.Marker
>
> 2018-03-31 00:17:03,287 INFO [stdout] (logback-appender-stash-127.0.0.1:4560-2) at at net.logstash.logback.composite.loggingevent.JsonMessageJsonProvider.writeTo(JsonMessageJsonProvider.java:52)
>
> 2018-03-31 00:17:03,287 INFO [stdout] (logback-appender-stash-127.0.0.1:4560-2) at at net.logstash.logback.composite.loggingevent.JsonMessageJsonProvider.writeTo(JsonMessageJsonProvider.java:31)
>
> 2018-03-31 00:17:03,287 INFO [stdout] (logback-appender-stash-127.0.0.1:4560-2) at at net.logstash.logback.composite.JsonProviders.writeTo(JsonProviders.java:77)
>
> 2018-03-31 00:17:03,287 INFO [stdout] (logback-appender-stash-127.0.0.1:4560-2) at at net.logstash.logback.composite.CompositeJsonFormatter.writeEventToGenerator(CompositeJsonFormatter.java:175)
>
> 2018-03-31 00:17:03,288 INFO [stdout] (logback-appender-stash-127.0.0.1:4560-2) at at net.logstash.logback.composite.CompositeJsonFormatter.writeEventToOutputStream(CompositeJsonFormatter.java:152)
>
> 2018-03-31 00:17:03,288 INFO [stdout] (logback-appender-stash-127.0.0.1:4560-2) at at net.logstash.logback.encoder.CompositeJsonEncoder.encode(CompositeJsonEncoder.java:114)
>
> 2018-03-31 00:17:03,288 INFO [stdout] (logback-appender-stash-127.0.0.1:4560-2) at at net.logstash.logback.encoder.CompositeJsonEncoder.encode(CompositeJsonEncoder.java:32)
>
> 2018-03-31 00:17:03,288 INFO [stdout] (logback-appender-stash-127.0.0.1:4560-2) at at net.logstash.logback.appender.AbstractLogstashTcpSocketAppender$TcpSendingEventHandler.onEvent(AbstractLogstashTcpSocketAppender.java:454)
>
> 2018-03-31 00:17:03,288 INFO [stdout] (logback-appender-stash-127.0.0.1:4560-2) at at net.logstash.logback.appender.AbstractLogstashTcpSocketAppender$TcpSendingEventHandler.onEvent(AbstractLogstashTcpSocketAppender.java:264)
>
> 2018-03-31 00:17:03,288 INFO [stdout] (logback-appender-stash-127.0.0.1:4560-2) at at net.logstash.logback.appender.AsyncDisruptorAppender$EventClearingEventHandler.onEvent(AsyncDisruptorAppender.java:330)
>
> 2018-03-31 00:17:03,288 INFO [stdout] (logback-appender-stash-127.0.0.1:4560-2) at at net.logstash.logback.appender.AsyncDisruptorAppender$EventClearingEventHandler.onEvent(AsyncDisruptorAppender.java:318)
>
> 2018-03-31 00:17:03,288 INFO [stdout] (logback-appender-stash-127.0.0.1:4560-2)
Well you are right this issue occurs because of several slf4j versions in classpath
Now we need to find out how it happened
Case 1:
When I look into maven reporitory for logback 1.2.3
I see it already has dependency to slf4j.
So when you load logback 1.2.3, slf4j will be added automatically
So you dont need to add additional slf4j into pom, if you are doing so pls remove it.
Refer link for more detail - Compile Depencencies:
Case 2:
Look into wildfly/modules/system/layers/base/org/slf4j
folder see if there is any slf4j jars already added into it. If so you need slf4j while compiling only
add <scope>compile</scope>