我们尝试添加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 添加到系统类路径来“解决”它
我的问题有两个部分:
- 问题是否
Rampart
熟悉,是否有解决方案? - 改变耳朵的清单不会影响类路径的原因是什么?(我对应用程序服务器没有那么丰富的经验 - 欢迎提供明显的答案)
我们正在使用Weblogic 10.3
和Rampart 1.5.1
。我们正在使用Maven
来编译和构建ear
文件——我今天刚刚了解了一个mar
文件,所以任何关于它的输入也将受到欢迎。