Grails 应用程序中的 Log4J 问题,它依赖于 comons-logging

Posted

技术标签:

【中文标题】Grails 应用程序中的 Log4J 问题,它依赖于 comons-logging【英文标题】:Log4J Issue in Grails app which has a dependency on comons-logging 【发布时间】:2012-03-06 11:50:56 【问题描述】:

我正在向我的 Grails 项目添加一个依赖项,它引入了 commons-logging 和 log4j 作为传递依赖项。当我运行我的应用程序时,我得到一个错误

Error Error executing script RunApp: Could not initialize class
org.apache.log4j.LogManager (NOTE: Stack trace has been filtered. Use --verbose to see 
entiretrace.) java.lang.NoClassDefFoundError: Could not initialize class 
org.apache.log4j.LogManager

我尝试通过排除 commons-logging 来删除 commons-logging 依赖项 this link。但它从来没有帮助。我看到 commons-logging 不是我添加的依赖项的直接依赖项。所以如果这样做

    runtime ('com.company.i18n:i18n:1.3.4')
     
        excludes 'commons-logging'
    

它是否排除了我的依赖项中的所有公共日志依赖项?或者只有直接的。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

我尝试从所有依赖项中排除“log4j”,但没有任何效果。最后我解决了这个问题,避免了所有的传递依赖,然后添加了必要的东西。

//add necessary dependencies.

runtime ('com.company.i18n:i18n:1.3.4')
 
    transitive = false

【讨论】:

感谢这也为我解决了grails和xmlapis之间的冲突!这让我发疯,直到我看到这终于奏效了!将此添加到 build.groovy --> runtime ('xml-apis:xml-apis:1.3.04') transitive = false

以上是关于Grails 应用程序中的 Log4J 问题,它依赖于 comons-logging的主要内容,如果未能解决你的问题,请参考以下文章

Grails 2.3.8 中两个位置的 log4j 日志记录配置

如何在 grails 中禁用 log4j 插件?

Tomcat“Log4J”上的 Grails WAR 根本不起作用

Grails:用logback替换log4j

Grails - 如何从 WAR 中删除 log4j

log4j与Grails 3.2.3:我没有得到任何记录