我使用的是grails 2.5.0版本和tomcat 8,在我的电脑上我可以毫无问题地部署这场 war ,但在服务器上却不行
我接受这个错误:
19-Jan-2018 13:03:17.992 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.listenerStart Error configuring application listener of class [org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener]
java.lang.StackOverflowError
at java.util.Hashtable.containsKey(Hashtable.java:335)
at org.apache.log4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:57)
at org.apache.log4j.LogManager.getLogger(LogManager.java:44)
at org.slf4j.impl.GrailsSlf4jLoggerFactory.getLogger(GrailsSlf4jLoggerFactory.java:42)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270)
at org.apache.log4j.Category.<init>(Category.java:56)
at org.apache.log4j.Logger.<init>(Logger.java:36)
at org.apache.log4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:60)
at org.apache.log4j.LogManager.getLogger(LogManager.java:44)
at org.slf4j.impl.GrailsSlf4jLoggerFactory.getLogger(GrailsSlf4jLoggerFactory.java:42)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270)
at org.apache.log4j.Category.<init>(Category.java:56)
at org.apache.log4j.Logger.<init>(Logger.java:36)
我在服务器中复制了同一个文件夹 tomcat,但出现此错误。
有什么帮助吗?
最佳答案
您的项目中可能存在一些日志库的循环依赖。
要解决这个问题,首先您应该检查您有哪些依赖项 在你的 Grails 项目中。在项目路径下运行下一个shell命令:
grails dependency-report > dependencies.txt
然后在 dependency.txt 中,您应该检查可能不兼容的日志库的使用情况。 很少有 slf4j 库如果同时使用会导致无限循环。
来自 slf4j 文档:
log4j-over-slf4j.jar and slf4j-log4j12.jar cannot be present simultaneously
jul-to-slf4j.jar and slf4j-jdk14.jar cannot be present simultaneously
更多详情请参阅:https://www.slf4j.org/legacy.html
例如,对我来说,修复是排除 log4j-over-slf4j 和 bcprov-jdk15 依赖项 来自 spring-security-rest 插件
plugins {
...
compile ("org.grails.plugins:spring-security-rest:1.5.3") {
excludes "log4j-over-slf4j", "bcprov-jdk15"
}
}
关于tomcat - 部署 war tomcat 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48347163/