Webアプリケーションを起動しますが、次のエラーメッセージが表示されます。

...

原因:java.lang.ClassNotFoundException:org.apache.commons.logging.LogFactory
...

1.通常のケース

1.1明らかに、Apache Commonsのロギングはありません。 `commons-logging-xxx.jar`です。これを修正するには、Mavenセントラルリポジトリから取得してください。

pom.xml

   <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
   </dependency>

2.スプリングケース

2.1 Springアプリケーションでは、開発者は常に `commons-logging`を除外しますが、別のロギングフレームワークを組み込むことは忘れてしまいます。例えば

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>

上記の宣言により、この `classNotFoundException:org.apache.commons.logging.LogFactory`も発生します。

2.2これを修正するには、別のロギングフレームワークを宣言します。これはSLF4jであり、ブリッジを介して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>

   <!-- bridge jck to slf4j -->
   <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>

参考文献

Commons Logging]。リンク://spring-mvc/spring-mvc-logback-slf4j-example/[Spring MVC

ログバックSLF4jの例]