2014-09-17 11 views
17

Il mio codice è molto semplice utilizzando apache-2.0.2-log4j:Ottenere Eccezione org.apache.logging.slf4j.SLF4JLoggerContext non può essere lanciato a org.apache.logging.log4j.core.LoggerContext

import org.apache.log4j.BasicConfigurator; 
import org.apache.log4j.Logger; 

public class Log4jtest { 
    static Logger log =Logger.getLogger(Log4jtest.class); 
    public static void main(String[] args) { 
    BasicConfigurator.configure(); 
     log.debug("This is debug message"); 
    } 

} 

Ma sto ricevendo un'eccezione come:

Exception in thread "main" java.lang.ExceptionInInitializerError 
Caused by: java.lang.ClassCastException: org.apache.logging.slf4j.SLF4JLoggerContext cannot be   cast to org.apache.logging.log4j.core.LoggerContext`` 
at org.apache.log4j.Logger.getLogger(Logger.java:41) 
at Log4jtest.<clinit>(Log4jtest.java:11) 

Perché l'eccezione proviene da un programma semplice?

+0

Controllare il file di configurazione di log4j. –

risposta

46

Rimuovere sotto vaso di dal percorso di classe e dovrebbe risolvere il problema -

log4j-to-slf4j-2.0.2.jar 
log4j-to-slf4j-2.0.2-sources.jar 
log4j-slf4j-impl-2.0.2.jar 
log4j-slf4j-impl-2.0.2-sources.jar 

sono stato in grado di replicare e risolvere il problema dopo aver scaricato apache-2.0.2-log4j da http://www.apache.org/dyn/closer.cgi/logging/log4j/2.0.2/apache-log4j-2.0.2-bin.zip.

+0

Inoltre, ti preghiamo di ricordare di accettare le tue risposte (tutte) se ti hanno dato risposte soddisfacenti (cliccando sul segno di spunta a sinistra delle risposte), sarebbe utile alla comunità – TheCodingFrog

+1

Questo funziona come al solito ma posso sapere la ragione esatta di come è successo? –

+0

Questo ha funzionato anche per me. Ho escluso le fonti e i test jar forniti all'interno del pacchetto ufficiale Log4J. Quindi aggiunto il jar flume-ng-sdk per rimuovere ClassNotFoundException. Quindi, finalmente rimosso questi 2 JAR per questo ClassCastException. Questa risposta dovrebbe essere accettata. –