我正在进行一个spring多模块项目。我已将春季版从3.x升级到5.3.17。升级后,在运行项目时,我收到以下错误:线程中的异常";主";java.lang.StackOverflowError
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:242)
at org.apache.commons.logging.LogAdapter$Slf4jAdapter.createLocationAwareLog(LogAdapter.java:130)
at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:91)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67)
at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:88)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:242)
at org.apache.commons.logging.LogAdapter$Slf4jAdapter.createLocationAwareLog(LogAdapter.java:130)
at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:91)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67)
at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:88)
在build.gradle文件中:编译(组:"org.springframework",名称:"spring-core",版本:"3.0.5.RELEASE"(。此处版本更改为5.3.17类似的东西应用于build.gradle 中与spring相关的spring上下文、spring-web等依赖项
您的SLF4J使用JCL作为后端,JCL使用SLF4J作为后端,因此产生StackOverflow。
Spring的较新版本将spring-jcl
作为传递依赖项,并将使用Jakarta Commons logging编码的日志重定向到SLF4J。
此外,如果类路径上有一个执行相反重定向的slf4j-jcl
绑定,则会得到一个StackOverflowException
。
只需将slf4j-jcl
从依赖项中删除,就可以了。