realm-java: SLF4J and Realm 4.+ NoClassDefFoundError OutputEventListenerBackedLoggerContext

Hello,

when using the combination of

classpath “io.realm:realm-gradle-plugin:4.2.0”

and

implementation “org.slf4j:slf4j-api:1.7.25”

with a local copy (not included via a gradale dependency) of the SLF4J implementation inside my projects (https://github.com/noveogroup/android-logger)

I get the following stracktrace

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.xxx.app.debug, PID: 27418
                  java.lang.NoClassDefFoundError: Failed resolution of: Lorg/gradle/internal/logging/slf4j/OutputEventListenerBackedLoggerContext;
                      at org.slf4j.impl.StaticLoggerBinder.<init>(StaticLoggerBinder.java:30)
                      at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:27)
                      at org.slf4j.impl.StaticLoggerBinder.getSingleton(StaticLoggerBinder.java:0)
                      at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
                      at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
                      at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
                      at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
                      at com.xxx.app.application.App.onCreate(App.kt:88)
                      at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025)
                      at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5448)
                      at android.app.ActivityThread.-wrap2(ActivityThread.java)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1564)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:154)
                      at android.app.ActivityThread.main(ActivityThread.java:6186)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
                   Caused by: java.lang.ClassNotFoundException: Didn't find class "org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext" on path: DexPathList[[zip file "/data/app/com.xxx.app.debug-1/base.apk", zip file "/data/app/com.xxx.app.debug-1/split_lib_directories_apk.apk"],nativeLibraryDirectories=[/data/app/com.xxx.app.debug-1/lib/arm, /data/app/com.xxx.app.debug-1/base.apk!/lib/armeabi-v7a, /data/app/com.xxx.app.debug-1/split_lib_directories_apk.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
                      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
                      at org.slf4j.impl.StaticLoggerBinder.<init>(StaticLoggerBinder.java:30) 
                      at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:27) 
                      at org.slf4j.impl.StaticLoggerBinder.getSingleton(StaticLoggerBinder.java:0) 
                      at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150) 
                      at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124) 
                      at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412) 
                      at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357) 
                      at com.xxx.app.application.App.onCreate(App.kt:88) 
                      at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025) 
                      at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5448) 
                      at android.app.ActivityThread.-wrap2(ActivityThread.java) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1564) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6186) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 

This reminds me of this issues that popped up beginning of the year. https://github.com/realm/realm-java/issues/3568 and it happened already before. https://github.com/realm/realm-java/issues/3018

By the way this is also happening if i add a different implementation of “StaticLoggerBinder” to my project. It seems to work fine when realm is removed.

Is there an issue with the gradle realm plugin? Does nobody else use SLF4J?

Thanks in advance

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Comments: 20 (9 by maintainers)

Commits related to this issue

Most upvoted comments

hey @nhachicha this snapshot version fixes the problem