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

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:



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>


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>

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.


8

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


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.


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>

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.


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

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.


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.



0

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


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.


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


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 .


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.


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


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.


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


-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


-2

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



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


nombre cosa? ¿de qué estás hablando?
Bob V.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.