Grails - 包括CAS客户端JAR依赖导致StackOverflowError,记录冲突?

时间:2015-01-06 21:19:49

标签: grails

如果我在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

2 个答案:

答案 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
}

我不清楚我需要具体排除什么,或者任何人如何从堆栈溢出中弄清楚这一点。