Java.Lang.NoClassDefFoundError: Org/Apache/Commons/Logging/LogFactory エラーを解決します。

Sheeraz Gul 2023年6月20日
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)

このエラーの理由は次のとおりです。

  1. Apache Commons Logging jar ファイルが正しくないか、存在しません。
  2. Commons Logging は依存関係に追加されません。

この問題を解決するための上記の理由の解決策は次のとおりです。

正しい Apache Commons Logging Jar を追加する

Apache Commons Logging jar がプロジェクトのビルド パスに追加されていないか、追加されたファイルが正しくない場合、java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactoryエラーがスローされます。

この問題を解決するには、次の手順に従います。

  • こちら から Apache Commons Logging jar をダウンロードします。
  • jar をプロジェクトのビルド パスに追加します。

上記の 2つの手順により、エラー java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory が解決されるはずです。 Maven または Spring を使用している場合は、依存関係を追加する必要があります。

Commons Logging を依存関係に追加する

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 Gul
Sheeraz Gul avatar Sheeraz Gul avatar

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

関連記事 - Java Error