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 中部署后它在服务器上的样子):
知道出了什么问题吗?
答案 0 :(得分:1)
好的,我希望它会帮助某人。原来是这个插件搞砸了:
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
它是由 Spring 初始值设定项 Web 应用程序默认添加的。在我删除它后,一切都开始正常工作。