如果我在compile "org.jasig.cas.client:cas-client-core:3.3.3"
中加入BuildConfig.groovy
,我会看到堆栈溢出,如下所示。如果我将compile
更改为runtime
,则错误消失,但我确实在编译时和运行时都有依赖关系。
它看起来像某种与日志记录相关的循环引用,只是获得这样的堆栈转储并不是很有帮助。我该如何解决?
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:253)
at org.apache.log4j.Category.<init>(Category.java:52)
at org.apache.log4j.Logger.<init>(Logger.java:35)
at org.apache.log4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:59)
at org.apache.log4j.LogManager.getLogger(LogManager.java:42)
at org.slf4j.impl.GrailsSlf4jLoggerFactory.getLogger(GrailsSlf4jLoggerFactory.java:43)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:253)
at org.apache.log4j.Category.<init>(Category.java:52)
at org.apache.log4j.Logger.<init>(Logger.java:35)
at org.apache.log4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:59)
at org.apache.log4j.LogManager.getLogger(LogManager.java:42)
at org.slf4j.impl.GrailsSlf4jLoggerFactory.getLogger(GrailsSlf4jLoggerFactory.java:43)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:253)
| Error Error executing script RefreshDependencies: null
答案 0 :(得分:1)
您的依赖关系链中可能有多个版本的log4j-over-slf4j。如果运行'grails dependency-report runtime',您将看到应用程序糟透的库列表。
使用transitive = false将排除lib的所有依赖关系,但如果您的依赖关系链中有多个slf4j版本,则可以尝试'排除'log4j-over-slf4j“'作为更集中的排除。如,
compile(“org.jasig.cas.client:cas-client-core:3.3.3”){ 排除“log4j-over-slf4j” }
答案 1 :(得分:0)
添加transitive=false
会导致错误消失:
compile("org.jasig.cas.client:cas-client-core:3.3.3") {
transitive=false
}
我不清楚我需要具体排除什么,或者任何人如何从堆栈溢出中弄清楚这一点。