Obteniendo java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory excepción

188

Estoy ejecutando el programa simple Inyección de dependencias de Spring y obtengo esta excepción. Ya he incluido el archivo common-logging1.1.1.jar y spring.jar. ¿Podrías ayudarme a salir?

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
skaffman
fuente
2
Primero, verifique que su classpath sea correcta. En segundo lugar, intente abrir el jar y verifique que realmente contiene la clase org.apache.commons.logging.LogFactory. Finalmente, intente depurar estableciendo un punto de interrupción en el cargador de clases.
Kolibri
2
Todas las respuestas a continuación sugieren que commons-logginges un paso atrás. Usar en su jcl-over-slf4jlugar.
Opiato
En Android, agregue testCompile 'commons-logging: commons-logging: 1.1.1' a app.gradle
Roger Garzon Nieto

Respuestas:

118

También me he enfrentado a los mismos problemas, para solucionarlo, descargue los archivos jar de la siguiente URL

http://commons.apache.org/logging/download_logging.cgi

y copie a su carpeta lib, resolverá su problema.

Manikandan
fuente
2
esto no funciona para mí, incluso después de agregar el jarro de commons mencionado anteriormente en classpath
Deen John
2
Tampoco para mi. Estas bibliotecas están rotas. Es muy frustrante.
Wesos de Queso
114

Si está utilizando Maven para administrar dependencias, agregue la siguiente línea en su pom.xml:

<dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
</dependency>
asuka
fuente
19

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

Si está utilizando Maven, use el siguiente código.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${slf4j.version}</version>
</dependency>
Paramesh Korrakuti
fuente
2
Incluir "jcl-over-slf4j" fue la única solución que me funcionó. Ya tenía el registro común en mis dependencias.
Italo Borssatto
Estoy usando spring-boot versión 2.0.1.RELEASE con maven. Esta fue la única solución que también funcionó para mí.
Carlos Nantes
18

Tuve el mismo problema y lo resolví simplemente agregando el commons-logging.jara la ruta de clase.

stacky
fuente
8

Agregar commons-logging.jar o commons-logging-1.1.jar resolverá esto ...

Un amigo
fuente
6

Ya he incluido common-logging1.1.1.jar y ...

¿Está seguro de haber escrito el nombre del archivo JAR exactamente correcto? Creo que probablemente debería ser commons-logging-1.1.1.jar(tenga -en cuenta el extra en el nombre). Compruebe también si el nombre del directorio es correcto.

NoClassDefFoundError siempre significa que no se puede encontrar una clase, por lo que lo más probable es que su ruta de clase no sea correcta.

Jesper
fuente
2
NoClassDefFoundErrorTambién puede ser causado por otros casos de esquina, como cuando los inicializadores de clase fallan en circunstancias oscuras.
skaffman
Además, si obtiene un NoClassDefFoundError porque la instanciación de clase falló, entonces debería haber obtenido primero una excepción ExceptionInInitializerError (a menos, por supuesto, que se haya detectado en silencio).
Kolibri
Y no olvides la "s"commons-logging-1.1.1.jar
Glenn Lawrence
@GlennLawrence Gracias, arreglé el nombre.
Jesper
6

Establecer el alcance para compilar lo hizo por mí

<dependency>
  <groupId>commons-logging</groupId>
  <artifactId>commons-logging</artifactId>
  <version>1.2</version>
  <scope>compile</scope>
</dependency>
Patrick Brielmayer
fuente
1
Resuelto mi situación. Cuando ejecuté los casos de prueba de Mockito, obtuve este error y resolví esta dependencia en pom.xml.
venugopal
4

Intente realizar una limpieza completa del directorio de destino / implementación para que la aplicación elimine los archivos de la biblioteca obsoleta. Realice una compilación nueva y compruebe que commons-logging.jar se está colocando en la carpeta lib correcta. Es posible que no se incluya cuando está creando la biblioteca para la aplicación.

emills
fuente
4

Problema resuelto agregando commons-logging.jar

Los archivos Imp son,

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
Tush
fuente
3

Dos opciones (al menos):

  1. Agregue el archivo jar de registro común a su archivo copiándolo en una carpeta local.

Nota: vincular el jar puede generar problemas con el servidor y tal vez la razón por la que se agrega a la ruta de compilación pero no resuelve el problema de inicio del servidor.

Así que no apunte el jar a una carpeta externa.

O...

  1. Si realmente no desea agregarlo localmente porque está compartiendo el jar entre proyectos, entonces ...

Si está utilizando una instancia de servidor tc, debe agregar el jar como un jar externo a las configuraciones de ejecución de la instancia del servidor.

vaya a ejecutar como, ejecute configuraciones ..., {su instancia de servidor tc}, y luego la pestaña Ruta de clase.

Luego agregue el jar de registro común.

devaaron
fuente
3

Tengo el mismo problema que tú. Finalmente revisé la versión de apache que posee la clase. Encontré que la versión 1.0.4 tiene la clase.

Intente usar la versión 1.0.4 en lugar de 1.1.X o 1.2.X

Mis dependencias:

    <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>

Mi código de Java

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());

Mi resultado:

130489168

Verifique también que sus dependencias maven estén bien importadas.

歌 永 _
fuente
0

Simplemente verifique si commons-logging.jar se ha agregado a sus libs y classpath. Tuve el mismo problema y fue por esto. dhammikas-

dhammikas
fuente
0

Generalmente asigno el classpath a una variable y luego lo verifico. He escrito un pequeño script de ruby ​​que incluyo en mis scripts de inicio que validan el classpath antes de iniciar Java . Validar el classpath antes de que comience la JVM me ha ahorrado mucho tiempo resolviendo este tipo de problemas.

brianegge
fuente
2
Debería considerar usar herramientas como Maven en su lugar.
Neovibrant
0

Hola, estaba siguiendo el tutorial en tutorialpoint.com. Agregue después de completar el Paso 2 - Instalar API de registro común de Apache: debe importar bibliotecas jar externas al proyecto desde los archivos descargados en este paso. Para mí, el nombre del archivo era " commons-logging-1.1.1 ".

El tercero
fuente
0

Si está ejecutando esto en Android, tenga en cuenta que aparentemente el java.beanspaquete no está completo en Android. Para intentar solucionarlo en Android, intente lo siguiente:

  1. Descargue android-java-air-bridge.jar (actualmente el botón de descarga está en la parte inferior de la página o enlace directo aquí )
  2. Copie el jar descargado en su directorio [APPROOT] / app / libs (o vincule el jar de cualquier otra forma)
  3. Cambie las import ***declaraciones a la de puente aéreo. Por ejemplo, en import javadz.beanutils.BeanUtilslugar deimport org.apache.commons.beanutils.BeanUtils;
  4. Limpiar y reconstruir el proyecto.

fuente 1 , fuente 2

Pido disculpas al darme cuenta de que esto no responde exactamente la pregunta, aunque esta página SO aparece mucho cuando busco NoClassDefFoundError: Failed resolution of: beanUtilserrores generados por Android .

Voy
fuente
0

Recibía el mismo error mientras el jar estaba presente. Ninguna solución funcionó. Lo que funcionó fue eliminar el jar del sistema de archivos (del directorio .m2) y luego limpiar el proyecto maven.

Anmol Gupta
fuente
0

Tengo el mismo problema en eclipse IDE, mi solución fue: Haga clic derecho en Mi proyecto> Propiedades

ingrese la descripción de la imagen aquí

Haga clic en Maven y escriba: jar en el Proyecto Active Maven

ingrese la descripción de la imagen aquí

Finalmente, aplique y cierre

Yuliem Alavez
fuente
0

En mi caso, estaba probando una aplicación Tomcat en eclipse y obtuve este error. Lo resolví revisando el .classpatharchivo y corrigí 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>

El atributo org.eclipse.jst.component.dependencyhabía estado perdido.

Pablo
fuente
-1

Compruebe si los frascos se importan correctamente. Los importé usando la ruta de compilación. Pero no reconoció el jar en la carpeta WAR / lib. Más tarde, copié el mismo jar en la carpeta war / lib . Funciona bien ahora. Puede actualizar / limpiar su proyecto.

Sibichakravarthy Gunasekaran
fuente
-2

Hola amigos, si obtienes alguna excepción no encontrada en el código de hibernación, es el problema de los archivos jar. Hay principalmente dos problemas
decir que su versión anterior de hibernate puede ser 3.2 debajo. funciona bien

2.primero comprueba la conexión de la base de datos. Si la base de datos funciona correctamente, fue un error en su programa o archivo jar.

por favor revise estos dos problemas si también no funciona, trató de IDE. Estoy usando netbeanside 6.9 versión. Aquí hibernate trabajando bien. No obtienes ningún error de la clase, no es una excepción.

Espero que este ayude más

Krishnarjun
fuente
-2

La solución es agregar el archivo jar common-logging.xx

Sachin
fuente
-2

intente agregar esta dependencia org.apache.commons commons-exec 1.3

usuario1244663
fuente
-3

Si todo lo demás falla, como lo hizo para mí, intente poner commons-logging-xyzjar en su directorio lib de Tomcat. ¡Resolvió el problema! Por cierto, estoy usando Tomcat 6.

Bob V.
fuente
nombre cosa? ¿de qué estás hablando?
Bob V.