Spring 找不到 apache commons 日志记录

时间:2021-03-17 23:05:10

标签: java spring docker tomcat apache-commons

Java 1.8
春季 5.3.5
Docker 中的 Tomcat 9

尝试在 docker 容器中的 apache tomcat 中运行 Spring 应用程序,但 Spring 无法初始化:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate     [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandl
erMapping]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError:  'org.apache.commons.logging.Log 
org.springframework.core.log.LogDelegateFactory.getHiddenLog(java.lang.String)' at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:225)

我已将 apache commons 包含到依赖项中:

plugins {
    id 'war'
    id 'org.springframework.boot' version '2.5.0-M2'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}


dependencies {
        implementation group: 'org.springframework', name: 'spring-jcl', version: '5.3.5'
        implementation group: 'org.springframework', name: 'spring', version: '5.3.5', ext: 'pom'
        implementation group: 'org.springframework', name: 'spring-webmvc', version: '5.3.5'
        implementation group: 'commons-logging', name: 'commons-logging', version: '1.2'
        implementation 'org.slf4j:jcl-over-slf4j:1.7.3'
        implementation 'ch.qos.logback:logback-classic:1.2.3'}

我也可以在部署时看到它(这就是在 tomcat9 中部署后它在服务器上的样子):

enter image description here

知道出了什么问题吗?

1 个答案:

答案 0 :(得分:1)

好的,我希望它会帮助某人。原来是这个插件搞砸了:

id 'io.spring.dependency-management' version '1.0.11.RELEASE'

它是由 Spring 初始值设定项 Web 应用程序默认添加的。在我删除它后,一切都开始正常工作。