Java.Lang.NoClassDefFoundError: Org/Apache/Commons/Logging/LogFactory 오류 해결
이 튜토리얼은 Java의 java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
오류를 보여줍니다.
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
해결
Apache Commons 및 Spring을 사용하는 경우 종속성 주입 중에 java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
오류가 발생할 수 있습니다. 오류는 일반적으로 다음과 같습니다.
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)
이 오류의 원인은 다음과 같습니다.
- Apache Commons Logging jar 파일이 올바르지 않거나 존재하지 않습니다.
- Commons Logging은 종속성에 추가되지 않습니다.
이 문제를 해결하기 위해 위의 이유에 대한 솔루션은 다음과 같습니다.
올바른 Apache Commons 로깅 Jar 추가
Apache Commons Logging jar가 프로젝트의 빌드 경로에 추가되지 않았거나 추가된 파일이 올바르지 않으면 java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
오류가 발생합니다.
이 문제를 해결하려면 아래 단계를 따르십시오.
-
여기에서 Apache Commons Logging jar를 다운로드합니다.
-
프로젝트의 빌드 경로에 jar를 추가합니다.
위의 두 단계는 java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
오류를 해결해야 합니다. Maven 또는 Spring을 사용하는 경우 종속성을 추가해야 합니다.
종속성에 Commons 로깅 추가
Maven을 사용 중이고 Apache Commons-Logging이 종속성에서 누락된 경우 java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
오류가 발생합니다. pom.xml
에 다음 종속성을 추가합니다.
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
위의 종속성을 추가하면 Maven의 문제가 해결됩니다.
Spring 애플리케이션을 사용하는 경우 개발자는 때때로 Commons Logging을 제외하지만 애플리케이션에 로깅 프레임워크가 필요하므로 다른 로깅 프레임을 삽입하는 것을 잊습니다.
<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>
위의 pom.xml
은 Spring 애플리케이션용이며, 보시다시피 Commons-Logging이 제외됩니다. 이것이 java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
오류를 발생시키는 이유입니다.
이 문제를 해결하려면 다른 로깅 프레임워크를 추가해야 합니다. 대부분의 경우 개발자는 SLF4j
로깅을 사용합니다. 또한 브리지를 사용하여 Spring의 로깅을 리디렉션해야 합니다.
Spring 애플리케이션의 pom.xml
에 다음을 추가합니다.
<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>
Maven 및 Spring에 대한 위의 프로세스를 따르면 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 Facebook