Resuelva el error Java.Lang.NoClassDefFoundError: Org/Apache/Commons/Logging/LogFactory
Este tutorial demuestra el error java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
en Java.
Resuelva el java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
Al usar Apache Commons y Spring, el error java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
puede ocurrir al inyectar las dependencias. El error generalmente se ve así:
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)
Las razones de este error son:
- Los archivos jar de Apache Commons Logging no son correctos o no están presentes.
- Commons Logging no se agrega a las dependencias.
Aquí están las soluciones por las razones anteriores para resolver este problema:
Agregar los archivos de registro de Apache Commons correctos
Si los archivos jar de Apache Commons Logging no se agregan a la ruta de compilación de su proyecto o los archivos agregados no son correctos, arrojará el error java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
.
Siga los pasos a continuación para resolver este problema:
-
Descargue los archivos jar de Apache Commons Logging desde aquí.
-
Agregue los frascos a la ruta de compilación de su proyecto.
Los dos pasos anteriores deberían resolver el error java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
. Si está utilizando Maven o Spring, debe agregar dependencias.
Agregar registro de Commons a las dependencias
Si está utilizando Maven y Apache Commons-Logging no se encuentra en las dependencias, arrojará el error java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
. Agregue la siguiente dependencia a pom.xml
:
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
Agregar la dependencia anterior resolverá el problema de Maven.
En el caso de usar la aplicación Spring, los desarrolladores a veces excluyen el registro de Commons pero se olvidan de insertar otro marco de registro ya que la aplicación requiere el marco de registro:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
El pom.xml
anterior es para la aplicación Spring y, como podemos ver, Commons-Logging está excluido; por eso arroja el error java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
.
Para resolver este problema, debemos agregar otro marco de registro; la mayoría de las veces, los desarrolladores usan el registro SLF4j
. También necesitamos redirigir el registro de Spring usando un puente.
Agregue lo siguiente a pom.xml
de la aplicación Spring:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Redirect the Spring logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${jcl.slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
Seguir el proceso anterior para Maven y Spring solucionará el error java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn FacebookArtículo relacionado - Java Error
- Arreglar Java fue iniciado por el código de salida devuelto = 1
- Arreglar JAVA_HOME no se puede determinar a partir del error de registro en R
- Arreglar java.io.IOException: No queda espacio en el dispositivo en Java
- Arreglar Java.IO.NotSerializableException en Java
- Arreglar Java.Lang.IllegalStateException de Android: no se pudo ejecutar el método de la actividad
- Arreglar Java.Lang.NoClassDefFoundError: No se pudo inicializar el error de clase