SLF4J: Falha ao carregar a classe “org.slf4j.impl.StaticLoggerBinder”. erro

115
  • Quanto ao IDE Eclipse ( Indigo , Juno e Kepler (versões de 32 e 64 bits))
  • Plataformas : Windows , Ubuntu , Mac
  • versão m2e : 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 ,
    1.4.0.20130601-0317

Informações gerais

O erro acima ocorreu após atualizar o m2e para a versão 1.1. Ao remover m2e 1.1 e voltar para m2e 1.0 tudo funcionou bem. Tentei repetir o problema no Windows e no Ubuntu e ocorreu exatamente o mesmo erro. Inúmeras configurações de slf4j-api e logback foram testadas, mas nenhuma parece funcionar.

O erro aparece em qualquer projeto maven, mesmo sem declarar a dependência slf4j .

  • Novo projeto Maven -> maven-archetype-quickstart

    e

  • Novo projeto Maven -> Projeto simples sem seleção de arquétipo

    resultado para

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

Testando ambientes e configurações

Testado com Eclipse Indigo e Eclipse Juno (32 e 64 bits ambos) no Mac, 32 bits no Ubuntu e 64 e 32 bits no Windows. Testou novas instalações de Juno Classic , Juno Modeling tools , Kepler Standard , Kepler Modeling Tools e produziu o mesmo erro.

O erro aparece com limpar , instalar , testar , implantar , gerar fontes , validar , compilar , empacotar , testar de integração , verificar e combinações da meta limpa com as metas restantes. Ele também aparece com os parâmetros -e e -X . Houve uma tentativa de excluir o repositório m2e e baixá-lo do zero, mas novamente sem sucesso. Devo mencionar que foi testado em 3 máquinas diferentes e caixa virtual em todos os sistemas acima, mas produziu o mesmo erro.

Tentei todas as configurações de logback diferentes (de 1.0.4 a 1.0.13) que resolvem as dependências slf4j-api e logback-core , mas todas produziram o mesmo erro:

<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version></version>
</dependency>

Tentei todas as configurações slf4j-simples diferentes (de 1.6.1 a 1.7.5) .

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

Tentei todas as configurações diferentes (de 1.6.1 a 1.7.5) log4j-over-slf4j .

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>log4j-over-slf4j</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

Tentei todas as configurações diferentes (de 1.6.1 a 1.7.5) slf4j-jdk14 .

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-jdk14</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

Tentei todas as configurações diferentes (de 1.6.1 a 1.7.5) slf4j-log4j12 .

<dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-log4j12</artifactId>
     <version></version>
     <scope>compile</scope>
</dependency>

Tentei configuração slf4j-nop 1.7.5 .

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-nop</artifactId>
  <version>1.7.5</version>
  <scope>compile</scope>
</dependency>

Por último, mas não menos importante, os logs são salvos e impressos apesar do erro.


Maneiras de reproduzir o erro

  • Baixe Eclipse Juno, Indigo ou Kepler 32 ou 64 bits (todas as instalações causarão o mesmo erro).

    • Instale m2e - Integração Maven para Eclipse

      OU

    • Atualize sua versão m2e para 1.1.0.20120530-0009 ou 1.2.0.20120903-1050 ou 1.3.0.20130129-0926 ou 1.4.0.20130601-0317 )


    • Selecione Arquivo-> Novo-> Outro-> Projeto Maven-> Clique em Avançar-> Selecione
      maven-archetype-quickstart do catálogo-> Concluir

      OU

    • Selecione Arquivo-> Novo-> Outro-> Projeto Maven-> Clique em Próximo-> Selecione Criar um projeto simples (pular a seleção de arquétipo) -> Informações Completas do Artefato-> Concluir

  • Clique com o botão direito no projeto-> Runs As-> clean install (ou qualquer outro objetivo mencionado acima)

A primeira linha do console será

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

PS Os projetos existentes produzirão o mesmo erro após atualizar a versão m2e para 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 , 1.4.0.20130601-0317


Atualizações

EDITAR

site de suporte m2e:

  • A pergunta acima foi postada como um bug no site de suporte m2e e a resposta de Igor Fedorenko foi que

    Não há planos imediatos para suprimir esta mensagem.

    Para visualizar o bug acima, consulte o site oficial de suporte m2e


EDITAR 2

  • A indicação de erro acima está presente também para m2e versão 1.2.0.20120903-1050


EDITAR 3

  • A indicação de erro acima é presente também para M2e versão 1.3.0.20130129-0926


EDITAR 4

  • A indicação de erro acima é presente também para M2e versão 1.4.0.20130601-0317


EDITAR 5

                              ***Reported FIXED***
  • O erro acima é relatado como corrigido para m2e versão 1.5.0 / Luna M3 ( Target Milestone ). A versão ainda não está disponível para download.
  • Luna M3 está agendada para 15 de novembro .
  • A última compilação de desenvolvimento está disponível aqui
  • Mais informações sobre os marcos m2e você pode encontrar no repositório principal m2e .
Margarite de Konstantinos
fonte
@EliranMalka É longo, mas tem um motivo. Tentar ajudar as pessoas a evitar fazer as mesmas perguntas e incluir todos os detalhes que possam parecer necessários para entender se estão enfrentando o mesmo problema não me deixou muitas opções. :-)
Margarite de Konstantinos
Recebi este erro ao tentar usar dados de primavera com neo4j que tenho slf4jem ambos slf4j-api-1.7.7e jcl-over-slf4j-1.7.7e se tento remover algum deles, recebo uma mensagem de erro dizendo que Loggerfalta a classe deles . O que devo fazer?
user1885868
@KonstantinosMargaritis pode me dizer como consertar isso com pom.xml, eu poderia fazê-lo funcionar na configuração local, mas no jenkins está sempre falhando.
vikramvi
Qual é a sua configuração atual @vikramvi?
Margarite de Konstantinos
@KonstantinosMargaritis, obrigado por nos responder. Percebi que o maven era a versão 3.0 no Linux atualizado para a versão mais recente e tentei novamente. isso corrigiu o problema. Mas tive que passar o dia inteiro tentando descobrir o que pode estar errado. Obrigado de qualquer forma.
vikramvi

Respostas:

75

Eu também posso confirmar esse erro.

Solução alternativa: é usar o maven externo dentro de m2eclipse, em vez de seu maven incorporado.

Isso é feito em três etapas:

1 Instale o maven na máquina local (a máquina de teste era Ubuntu 10.10)

mvn --version

Apache Maven 2.2.1 (rdebian-4) Versão do Java: 1.6.0_20 Início do Java: / usr / lib / jvm / java-6-openjdk / jre Localidade padrão: de_DE, codificação da plataforma: UTF-8 Nome do sistema operacional: "linux" versão: "2.6.35-32-generic" arch: "amd64" Família: "unix"

2 Executar o maven externamente link como executar o maven do console

> cd path-to-pom.xml
> mvn test
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Simple
    [INFO]    task-segment: [test]
    [INFO] ------------------------------------------------------------------------
    [...]
    [INFO] Surefire report directory: [...]/workspace/Simple/target/surefire-reports
    
    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running net.tverrbjelke.experiment.MainAppTest
    Hello World
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 sec
    
    Results :
    
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    [INFO] ------------------------------------------------------------------------
    [...]

3 dentro do m2eclipse: mudar de maven incorporado para maven local

  • descobrir onde dir instalação de home maven local é ( mvn --versionou Google para o seu MAVEN_HOME, para mim isso me ajudou a que é /usr/share/maven2)
  • em Eclipse Menu-> Window-> Preferences-> Maven-> Installation-> insira aquela string. Então você deve ter mudado para o seu novo maven externo.
  • em seguida, execute seu projeto como, por exemplo, "teste maven".

A mensagem de erro deve ter desaparecido.

tverrbjelke
fonte
1
Aceito sua resposta, pois é a única solução alternativa para contornar o erro irritante. Muito obrigado pela sua resposta analítica. :) ..
Margarite de Konstantinos
3
hmm Estou no Windows e mudei para as novas instalações externas, porém o erro ainda existe !?
stefan.at.wpf
4
desculpe, funciona. Observe que há uma opção para o tempo de execução do maven (interno / externo) nas configurações de execução. portanto, se você usar um salvo, certifique-se de atualizá-lo.
stefan.at.wpf
@ stefan.at.wpf É bom saber que funciona. Se quiser, você pode se inscrever na lista de discussão do bug e se informar caso algo mude.
Margarite de Konstantinos de
2
Para mim, #mvn --versioné conveniente mostrar o MAVEN_HOME.
biaobiaoqi
25

Existe uma documentação no site SLf4J para resolver isso. Segui e adicionei slf4j-simple-1.6.1.jar ao meu aplicativo junto com slf4j-api-1.6.1.jar que eu já tinha. Isso resolveu meu problema

slf4j

Mohammed Irfan Tirupattur
fonte
4
isso funciona, no maven pode adicionar: <dependency> <groupId> org.slf4j </groupId> <artifactId> slf4j-simple </artifactId> <version> 1.XX </version> </dependency> // Basta substituir por sua versão
Enrique San Martín
@Mohammed Irfan posso precisar adicionar este twojar na pasta libs no Eclipse?
Erum
1
Estou usando uma versão posterior do Maven e segui as etapas acima, mas foi essa a resposta que fez o problema desaparecer - obrigado :)
Rob Wilson
15

Se você estiver usando o Gradle, adicione:

dependencies { 
... 
compile "org.slf4j:slf4j-simple:1.7.9" 
... 
}
Dias
fonte
Funciona aqui com o Gradle !! Você pode explicar o que acontece quando adicionamos essa biblioteca?
Felipe Pereira
5

Teve um erro semelhante com o mesmo resultado com o Gradle e foi capaz de resolvê-lo da seguinte forma:

//compile 'org.slf4j:slf4j-api:1.7.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.1'

A linha comentada é aquela que causou a saída de erro. Eu acredito que você pode transferir isso para Maven.

Tomasb
fonte
3

Você não especificou a versão em seu arquivo de dependência do maven pode ser por isso que ele não está escolhendo o jar mais recente.
Além disso, você precisa de outra dependência com slf4j-log4j12id de artefato.
Incluir isso em seu arquivo pom

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.5.6</version>
</dependency>

Deixe-me saber se o erro ainda não foi resolvido
Eu também recomendo que você veja este link


fonte
3
Todas as versões indicadas foram verificadas. Não o declarei ali para evitar a repetição. A tag foi deixada vazia intencionalmente. Por favor, veja que o problema acima foi postado como um bug no site de suporte do m2e e não há maneira de resolver o erro acima a menos que seja suprimido pelos desenvolvedores do m2e. Eu li o site várias vezes e incluí todas as bibliotecas possíveis que poderiam resolver o problema. Infelizmente nenhuma configuração funcionou porque tem a ver com m2e ao invés das dependências declaradas. O erro acima não aparece no console do maven ou no Netbeans.ONLY no Eclipse.
Margarite de Konstantinos de
1
slf4j-log4j12 é outra ligação junto com slf4j-simple, slf4j-jdk14 e logback-classic. Qualquer uma das dependências acima deve ter resolvido o problema com a vinculação. Como expliquei anteriormente, o problema é com m2e. Obrigado mesmo assim.
Margarite de Konstantinos de
3

Cole este código em seu arquivo pom.xml. Funciona para mim.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
James25
fonte
Ele resolve o erro “org.slf4j.impl.StaticLoggerBinder”, mas agora está registrando tudo, coloco log4j.xml e log4j.properties (um por vez) em src / test / resources, agora todos os frameworks em meu projeto estão registrando toneladas de mensagens, exceto meus próprios registros.
OJVM
1

Estive examinando o problema depois de o ter levantado. Acredite que esta será uma boa leitura para outras pessoas que vêm aqui com o mesmo problema:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=387064

Principe
fonte
forneça uma resposta completa, não apenas um link.
slfan
@Prince Se você ler a descrição da pergunta, poderá encontrar uma parte que diz "Para visualizar o bug acima, consulte o site oficial de suporte m2e", que aponta para o url que você mencionou.
Margarite de Konstantinos
Opa .. Meu mal. Minhas sinceras desculpas!
Príncipe
1

Eu tive um problema semelhante para meu aplicativo Spring Boot - Gradle em execução no Eclipse Luna. Eu poderia resolver isso adicionando manualmente uma entrada no .classpath do meu projeto

<classpathentry sourcepath="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/3150039466ad03e6ef1c7ec1c2cbb0d96710cf64/slf4j-simple-1.7.7-sources.jar" kind="lib" path="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/8095d0b9f7e0a9cd79a663c740e0f8fb31d0e2c8/slf4j-simple-1.7.7.jar"/>

A ideia é seguir esta solução. Mas como implementar depende de caso para caso. Uma forma de consertar é a que usei acima.

Espero que isto ajude.

Vipul Agarwal
fonte
0

Esta não é uma mensagem de erro, mas sim um aviso. É explicado de forma muito clara em seu site como:

Esta mensagem de aviso, ou seja, não é um erro, é relatada quando nenhum provedor SLF4J pode ser encontrado no caminho da classe. Colocar um (e apenas um) de slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar ou logback-classic.jar no caminho da classe deve resolver o problema. Observe que esses provedores devem ter como alvo slf4j-api 1.8 ou posterior.

Na ausência de um provedor, SLF4J assumirá como padrão um provedor de logger no-operation (NOP).

https://www.slf4j.org/codes.html#StaticLoggerBinder

Avenugopalan
fonte
0

Tive o mesmo problema ao escrever o programa produtor Kafka usando java. Este erro está ocorrendo devido à biblioteca slf4j incorreta. use abaixo a dependência maven simples do slf4j que resolverá seu problema.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
svk 041994
fonte