【发布时间】: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 中定义 - log4j 和 log4j-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
我的问题分为两部分:
-
Rampart问题是否熟悉,是否有解决方案? - 可能是什么原因 改变耳朵的清单 不会影响类路径? (我是 没那么有经验 应用程序服务器 - 如此明显 欢迎回答)
我们正在使用Weblogic 10.3 和Rampart 1.5.1。我们正在使用Maven 编译和构建ear 文件——我今天刚刚了解到mar 文件,因此也欢迎任何有关它的输入。
【问题讨论】:
标签: java classpath weblogic-10.x manifest.mf rampart