Classcastexception-Fehler: org.slf4j.impl.Log4jLoggerAdapter kann nicht umgewandelt werden, ch.qos.logback.classic.Logger
War ich nach diese beantworten, damit Sie einen appender an Laufzeit. Auch wenn für den ursprünglichen poster, bekomme ich diese exception in Zeile Logger logger = (Logger) LoggerFactory.getLogger("abc.xyz");
:
java.lang.ClassCastException: org.slf4j.impl.Log4jLoggerAdapter cannot be cast to ch.qos.logback.classic.Logger
de.mypackage.controller.MyController.meinOeOrte(MyController.java:335)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
Einfache Frage... warum funktioniert es bei ihm und bei mir nicht? 😛
Überprüfen Sie die Bibliothek, die Sie immer Ihre Logger und LoggerFactory aus, Sie sollten alle die gleichen.
InformationsquelleAutor Erando | 2015-07-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser sieht aus wie ein symptom, dass mehrere Versionen der gleichen Abhängigkeit (slf4j) in den classpath.
Schau in deinen logs nach dieser Meldung:
SLF4J: Class path contains multiple SLF4J bindings.
Wird es standardmäßig verwendet die erste slf4j Referenz findet in den classpath. In der Vergangenheit habe ich behoben, indem mein Logback Abhängigkeiten (logback-classic und logback-core) an die Spitze der Abhängigkeiten Abschnitt meines Maven pom.xml die Datei, die Sie zuvor in den classpath. Das ist eine fragile Lösung, und es funktioniert möglicherweise nicht, je nach Ihrer Anwendung-Architektur. (wenn z.B. Ihr startup-Projekt enthält die widersprüchliche Abhängigkeit in seiner pom.xml und Sie verweisen Logback über ein anderes Projekt und seine pom.xml)
InformationsquelleAutor Kyle McVay
Aufgrund einer bereits bestehenden Abhängigkeit von SLF4J in Ihrem Projekt oder in einigen anderen übernommenen Projekt, möglicherweise gibt es Konflikte während der Laufzeit. Hinzufügen eines Ausgrenzung zu meinem
POM
Datei für mich gearbeitet:InformationsquelleAutor gursahib.singh.sahni
In diesem Fall stellen Sie sicher, dass die Bibliothek, die Sie für den Logger und LoggerFactory die gleiche sein sollte
Zum Beispiel, wenn LoggerFactory ist von slf4j dann Logger sollte nicht von log4j oder java.util. Stellen Sie sicher, es ist auch von slf4j.
Lassen Sie mich wissen, wenn Sie noch mit der Frage konfrontiert.
InformationsquelleAutor SHREYA PRASAD