1
resposta

Log4j inicializando gera erro.

Erro:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/Logger
    at org.apache.logging.slf4j.SLF4JServiceProvider.initialize(SLF4JServiceProvider.java:53)
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:183)
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:170)
    at org.slf4j.LoggerFactory.getProvider(LoggerFactory.java:455)
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:441)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:390)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:416)
    at org.apache.activemq.ActiveMQConnectionFactory.<clinit>(ActiveMQConnectionFactory.java:63)
    at org.apache.activemq.jndi.ActiveMQInitialContextFactory.createConnectionFactory(ActiveMQInitialContextFactory.java:207)
    at org.apache.activemq.jndi.ActiveMQInitialContextFactory.createConnectionFactory(ActiveMQInitialContextFactory.java:146)
    at org.apache.activemq.jndi.ActiveMQInitialContextFactory.getInitialContext(ActiveMQInitialContextFactory.java:65)
    at java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:730)
    at java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
    at java.naming/javax.naming.InitialContext.init(InitialContext.java:236)
    at java.naming/javax.naming.InitialContext.<init>(InitialContext.java:184)
    at br.com.caellum.jms.TesteConsumidor.main(TesteConsumidor.java:12)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.Logger
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
    ... 16 more

Código TesteConsumidor.java

package br.com.caellum.jms;

import java.util.Scanner;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.naming.InitialContext;

public class TesteConsumidor {
    public static void main(String[] args) throws Exception{

        InitialContext context = new InitialContext(); 

        //imports do package javax.jms
        ConnectionFactory factory = (ConnectionFactory) context.lookup("ConnectionFactory");
        Connection connection = factory.createConnection();
        connection.start();

        new Scanner(System.in).nextLine(); //parar o programa para testar a conexao

        connection.close();
        context.close();
    }
}

Tudo instalado corretamente mas a versao está reclamando do meu LOG4j? como resolver?

1 resposta

Oii, Sadraque! Tudo bem?

O erro que está retornando, geralmente indica que a biblioteca log4j não está disponível no classpath do seu projeto.

Sugiro que observe alguns pontos que podem ajudar a resolver:

  • Verifique se a biblioteca log4j está presente no seu classpath: basta ir ao diretório de bibliotecas do seu projeto e veja se a dependência log4j está no arquivo de configuração do seu projeto.

  • Atualize a versão da biblioteca log4j: normalmente pode ocorrer incompatibilidade devido à versão.

  • Verifique se há conflitos de dependência: em alguns casos, o problema pode ser causado por conflitos entre diferentes versões da mesma biblioteca presentes no classpath. Ferramentas de build como Maven e Gradle têm maneiras de identificar e resolver esses conflitos.

Após fazer qualquer mudança, não esqueça de reiniciar o projeto para serem salvas.

Para complementar os seus estudos, deixo abaixo o um artigo da Alura que aborda sobre a vulnerabilidade Log4j e também a documentação dessa biblioteca:

A documentação pode abrir no idioma inglês, caso não se sinta confortável com o idioma, clique o botão direito do mouse em qualquer canto da página e escolha a opção "Traduzir para o português".

Acredito que as sugestões serão um bom ponto de partida para a solução. Qualquer dúvida, compartilhe no fórum.

Bons estudos, Sadraque!