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の例]