Obtendo java.lang.ClassNotFoundException: exceção org.apache.commons.logging.LogFactory


188

Estou executando um programa simples de injeção de dependência da primavera e recebendo essa exceção. Eu já incluí os arquivos common-logging1.1.1.jar e spring.jar. Você poderia ajudar a sair?

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:119)
    at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:55)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:56)
    at com.client.StoryReader.main(StoryReader.java:15)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    ... 6 more

2
Primeiro, verifique se o seu caminho de classe está realmente correto. Segundo, tente abrir o jar e verifique se ele realmente contém a classe org.apache.commons.logging.LogFactory. Por fim, tente depurar definindo um ponto de interrupção no carregador de classes.
227 Kolibri

2
Todas as respostas abaixo sugeridas commons-loggingsão um passo atrás. Use em jcl-over-slf4jvez disso.
opie

Em Android adicionar 'commons-logging: commons-logging: 1.1.1' testCompile para app.gradle
Roger Garzon Nieto

Respostas:



112

Se você estiver usando o maven para gerenciar dependências, adicione a seguinte linha no seu pom.xml:

<dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
</dependency>


19

commons-logging-1.1.1.jar ou jcl-over-slf4j-1.7.6.jar al

Se você estiver usando o maven, use o código abaixo.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${slf4j.version}</version>
</dependency>

2
Incluir "jcl-over-slf4j" foi a única solução que funciona para mim. Eu já tinha o registro comum em minhas dependências.
Italo Borssatto

Estou usando o Spring-boot versão 2.0.1.RELEASE com o maven. Essa foi a única solução que funcionou para mim também.
Carlos Nantes

18

Eu tive o mesmo problema e o resolvi apenas adicionando o commons-logging.jarao caminho da classe.


8

Adicionar commons-logging.jar ou commons-logging-1.1.jar resolverá isso ...


6

Eu já incluí o common-logging1.1.1.jar e ...

Tem certeza de que digitou exatamente o nome do arquivo JAR? Eu acho que provavelmente deveria ser commons-logging-1.1.1.jar(observe o extra -no nome). Verifique também se o nome do diretório está correto.

NoClassDefFoundError sempre significa que uma classe não pode ser encontrada; portanto, o caminho da classe provavelmente não está correto.


2
NoClassDefFoundErrortambém pode ser causado por outros casos de canto, como quando os inicializadores de classe falham em circunstâncias obscuras.
22410 skaffman

Além disso, se ele obtiver um NoClassDefFoundError porque a instanciação da classe falhou, ele deverá ter recebido uma exceção ExceptionInInitializerError primeiro (a menos que, obviamente, tenha sido capturada silenciosamente).
224 Kolibri

E não se esqueça o "S"commons-logging-1.1.1.jar
Glenn Lawrence

@ GlennLawrence Obrigado, corrigiu o nome.
Jesper

6

Definir o escopo para compilar fez isso por mim

<dependency>
  <groupId>commons-logging</groupId>
  <artifactId>commons-logging</artifactId>
  <version>1.2</version>
  <scope>compile</scope>
</dependency>

1
Resolveu minha situação. Ao executar os casos de teste do Mockito, recebi esse erro e resolvi essa dependência do pom.xml.
venugopal

4

Tente fazer uma limpeza completa do diretório de destino / implantação do aplicativo para se livrar de todos os frascos antigos da biblioteca. Faça uma nova compilação e verifique se o commons-logging.jar está realmente sendo colocado na pasta lib correta. Pode não estar incluído quando você está construindo a biblioteca para o aplicativo.


4

Problema resolvido adicionando commons-logging.jar

Arquivos Imp são,

antlr-runtime-3.0.1

org.springframework.aop-3.1.0.M2

org.springframework.asm-3.1.0.M2

org.springframework.aspects-3.1.0.M2

org.springframework.beans-3.1.0.M2

org.springframework.context.support-3.1.0.M2

org.springframework.context-3.1.0.M2

org.springframework.core-3.1.0.M2

org.springframework.expression-3.1.0.M2

commons-logging-1.1.1

3

Duas opções (pelo menos):

  1. Adicione o jar de log de bens comuns ao seu arquivo, copiando-o para uma pasta local.

Nota: vincular o jar pode levar a problemas com o servidor e talvez o motivo pelo qual ele foi adicionado ao caminho de construção, mas não resolvendo o problema de inicialização do servidor.

Portanto, não aponte o jar para uma pasta externa.

OU...

  1. Se você realmente não deseja adicioná-lo localmente porque está compartilhando o frasco entre os projetos, então ...

Se você estiver usando uma instância do servidor tc, precisará adicionar o jar como um jar externo às configurações de execução da instância do servidor.

vá para executar como, execute configurações ..., {sua instância do servidor tc} e, em seguida, a guia Caminho da classe.

Em seguida, adicione o frasco de registro comum.


3

Eu tenho o mesmo problema que você. Finalmente, verifiquei a versão do apache que possui a classe. Eu descobri que a versão 1.0.4 tem a classe.

Tente usar a versão 1.0.4 em vez de 1.1.X ou 1.2.X

Minhas dependências:

    <dependencies>
        <dependency>
            <groupId>org.jolokia</groupId>
            <artifactId>jolokia-core</artifactId>
            <version>1.3.5</version>
        </dependency>
        <dependency>
            <groupId>org.jolokia</groupId>
            <artifactId>jolokia-client-java</artifactId>
            <version>1.3.5</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.0.4</version>
        </dependency>
    </dependencies>

My Java Code

J4pClient j4pClient = new J4pClient("http://localhost:8080/jolokia");
J4pReadRequest req = new J4pReadRequest("java.lang:type=Memory","HeapMemoryUsage");
req.setPath("used");
J4pReadResponse resp = j4pClient.execute(req);
System.out.println(resp.getValue());

Meu resultado:

130489168

Verifique também se as dependências do maven estão bem importadas.



0

Apenas verifique se o commons-logging.jar foi adicionado às suas bibliotecas e ao caminho da classe. Eu tive o mesmo problema e isso foi devido a isso. dhammikas-


0

Geralmente, atribuo o caminho de classe a uma variável e depois o verifico. Eu escrevi um pequeno script ruby ​​que incluo nos meus scripts de inicialização que valida o caminho de classe antes de iniciar o java . A validação do caminho de classe antes do início da JVM economizou muito tempo na solução desses tipos de problemas.


2
Você deve considerar o uso de ferramentas como o Maven.
Neovibrant 17/09/12

0

Ei, eu estava seguindo o tutorial em tutorialpoint.com. Adicione depois de concluir a Etapa 2 - Instalar a API de Apache Common Logging: você deve importar bibliotecas jar externas para o projeto a partir dos arquivos baixados nesta etapa. Para mim, o nome do arquivo era " commons-logging-1.1.1 ".


0

Se você estiver executando isso no Android, observe que aparentemente o java.beanspacote não está completo no Android. Para tentar corrigi-lo no Android, tente o seguinte:

  1. Faça o download do android-java-air-bridge.jar (atualmente o botão de download está na parte inferior da página ou no link direto aqui )
  2. Copie o jar baixado para o diretório [APPROOT] / app / libs (ou vincule o jar de qualquer outra maneira)
  3. Mude as import ***declarações para as da ponte aérea. Por exemplo, em import javadz.beanutils.BeanUtilsvez deimport org.apache.commons.beanutils.BeanUtils;
  4. Limpar e reconstruir o projeto

fonte 1 , fonte 2

Peço desculpas ao perceber que isso não está respondendo exatamente à pergunta, embora esta página SO apareça bastante ao procurar por NoClassDefFoundError: Failed resolution of: beanUtilserros gerados pelo Android .


0

Eu estava recebendo o mesmo erro enquanto o frasco estava presente. Nenhuma solução funcionou. O que funcionou foi excluir o jar do sistema de arquivos (do diretório .m2) e depois limpar o projeto maven.


0

Eu tenho o mesmo problema no eclipse IDE, minha solução foi: Clique com o botão direito do mouse em Meu projeto> Propriedades

insira a descrição da imagem aqui

Clique no Maven e escreva: jar no projeto Active Maven

insira a descrição da imagem aqui

Finalmente, aplique e feche


0

No meu caso, estava testando um aplicativo Tomcat no eclipse e recebi esse erro. Eu o resolvi verificando o .classpatharquivo e corrigi esta entrada:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
        <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
    </attributes>
</classpathentry>

O atributo org.eclipse.jst.component.dependencyestava ausente.


-1

Verifique se os frascos foram importados corretamente. Eu os importei usando o caminho de construção. Mas não reconheceu o jar na pasta WAR / lib. Mais tarde, copiei o mesmo jar para a pasta war / lib . Funciona bem agora. Você pode atualizar / limpar seu projeto.


-2

Olá amigos se o seu obter qualquer não classe encontrada exceção no código de hibernação é o problema do frasco files.here principalmente dois problemas
1.I quer dizer a sua versão de trabalho velho do Hibernate pode ser 3,2 bellow.So se u tentar acima 3.6 que vai funciona bem

Se o banco de dados estiver funcionando corretamente, foi um erro no seu programa ou arquivo jar.

verifique esses dois prioblems se também não funcionar, você tentou o IDE. Estou usando o netbeanside 6.9 version.here hibernate funcionando bem. Você não recebe nenhum erro da classe e não encontra exceção ..

Espero que este ajude mais


-2

A solução é adicionar o arquivo jar common-logging.xx


-2

tente adicionar essa dependência org.apache.commons commons-exec 1.3


-3

Se tudo mais falhar, como aconteceu comigo, tente colocar o commons-logging-xyzjar no diretório lib do Tomcat. Resolveu o problema! BTW, estou usando o Tomcat 6.


coisa do nome? do que você está falando?
Bob V.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.