【问题标题】:IllegalAccessError when adding Rampart to the POM's dependencies将 Rampart 添加到 POM 的依赖项时出现 IllegalAccessError
【发布时间】:2011-06-01 16:54:31
【问题描述】:

我们尝试将 Rampart 添加到我们模块的 POM 文件中,但这样做之后,我们的 ear 无法再以以下异常开始:

java.lang.IllegalAccessError: tried to access method org.apache.log4j.Logger.<init>(Ljava/lang/String;)V from class org.apache.log4j.spi.RootLogger
        at org.apache.log4j.spi.RootLogger.<init>(RootLogger.java:43)
        at org.apache.log4j.LogManager.<clinit>(LogManager.java:78)
        at org.apache.log4j.xml.XMLWatchdog.doOnChange(DOMConfigurator.java:862)
        at org.apache.log4j.helpers.FileWatchdog.checkAndConfigure(FileWatchdog.java:88)
        at org.apache.log4j.helpers.FileWatchdog.<init>(FileWatchdog.java:57)
        at org.apache.log4j.xml.XMLWatchdog.<init>(DOMConfigurator.java:853)
        at org.apache.log4j.xml.DOMConfigurator.configureAndWatch(DOMConfigurator.java:584)

org.apache.log4j.Logger 在两个 jar 中定义 - log4jlog4j-over-slf4j。 在log4j - 有一个构造函数:

protected Logger(String name)

log4j-over-slf4j中有一个构造函数:

Logger(String name) //Package access only

似乎由于某种原因Rampart 触发了错误的类路径顺序,并将log4j-over-slf4j 放在log4j 之前。

然而,最麻烦的问题是我们无法更改 ear 的清单来更改顺序 - 所以最终我们通过将 log4j jar 添加到 System Classpath

我的问题分为两部分:

  1. Rampart 问题是否熟悉,是否有解决方案?
  2. 可能是什么原因 改变耳朵的清单 不会影响类路径? (我是 没那么有经验 应用程序服务器 - 如此明显 欢迎回答)

我们正在使用Weblogic 10.3Rampart 1.5.1。我们正在使用Maven 编译和构建ear 文件——我今天刚刚了解到mar 文件,因此也欢迎任何有关它的输入。

【问题讨论】:

    标签: java classpath weblogic-10.x manifest.mf rampart


    【解决方案1】:

    log4j-over-slf4j 是对 slf4j 代理的 log4j 的替换。这意味着在您的类路径中,您的类具有相同的名称和包,但实现却截然不同。

    由于您在系统中使用 log4j,因此删除 log4j-over-slf4j 是安全的。在这种情况下,需要 log4j-over-slf4j 的库实际上将使用原始 log4j。

    【讨论】:

    • 感谢您的澄清 - 问题是我们无法删除 log4j-over-slf4j,它来自我们必须使用的第 3 方。
    • 我遇到了同样的问题,这解决了我的问题。我认为这是正确的解决方案。 OP 的 log4j-over-slf4j 可能可以通过 pom 文件排除。
    【解决方案2】:

    最终我们手动修改了pom.xml,并将依赖关系的顺序改为将log4j放在rampart之前——这解决了类路径顺序问题。

    【讨论】:

    • 我相信即使您的 log4j-over-slf4j 来自第三方依赖项,您也应该能够通过 pom 文件排除传递依赖项。
    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    相关资源
    最近更新 更多