Java 将Rampart添加到POM时出错';s依赖关系
我们尝试将Java 将Rampart添加到POM时出错';s依赖关系,java,classpath,weblogic-10.x,manifest.mf,rampart,Java,Classpath,Weblogic 10.x,Manifest.mf,Rampart,我们尝试将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
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)
在log4j-over-slf4j
中有一个构造函数:
protected Logger(String name)
Logger(String name) //Package access only
似乎出于某种原因,Rampart
触发了错误的类路径顺序,并将log4j-over-slf4j
放在log4j
之前
然而,最麻烦的问题是我们无法更改ear
的清单来更改顺序,因此最终我们通过将log4j
jar添加到系统类路径中来“解决”它
我的问题分为两部分:
Rampart
问题是否常见,是否有解决方案我们使用的是
weblogic10.3
,以及rampart1.5.1
。我们正在使用Maven
编译和构建ear
文件,我今天刚刚了解了一个mar
文件,因此也欢迎任何有关该文件的输入。log4j-over-slf4j替代了代理slf4j的log4j。这意味着在您的类路径中,您的类具有相同的名称和包,但实现非常不同
由于您在系统中使用log4j,因此删除log4j-over-slf4j是安全的。在这种情况下,需要log4j-over-slf4j的库实际上将使用原始的log4j。log4j-over-slf4j是代理slf4j的log4j的替代品。这意味着在您的类路径中,您的类具有相同的名称和包,但实现非常不同
由于您在系统中使用log4j,因此删除log4j-over-slf4j是安全的。在这种情况下,需要log4j-over-slf4j的库实际上将使用原始的log4j。最终我们手动修改了
pom.xml
,并将依赖项的顺序更改为将log4j
放在rampart
之前,这解决了类路径顺序问题。最终我们修改了pom.xml
手动将依赖项的顺序更改为将log4j
放在rampart
之前-这解决了类路径顺序问题。感谢您的澄清-问题是我们无法删除log4j-over-slf4j
,它来自我们必须使用的第三方。我也遇到了同样的问题,这解决了我的问题。我认为这是正确的解决办法。OP的log4j-over-slf4j可能可以通过pom文件排除。感谢您的澄清-问题是我们无法删除log4j-over-slf4j
,它来自我们必须使用的第三方。我也遇到了同样的问题,这解决了我的问题。我认为这是正确的解决办法。OP的log4j-over-slf4j可能可以通过pom文件排除。我相信即使您的log4j-over-slf4j来自第三方依赖,您也应该能够通过pom文件排除可传递依赖。我相信即使您的log4j-over-slf4j来自第三方依赖,您应该能够通过pom文件排除可传递依赖项。